kostenloser Webspace werbefrei: lima-city


Mysql Alternative zu Match-Against-Suche?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    kyoshin

    Kostenloser Webspace von kyoshin

    kyoshin hat kostenlosen Webspace.

    Guten Morgen Comunity =)

    Habe ein Problem und find einfach keinen Lösungsansatz.

    Ich möchte eine Tabelle einer Datenbank durchsuchen und dachte da an Match-Against.
    Leider funktioniert das nicht so wie ich es bräuchte.
    Bsp:
    SELECT * FROM user
    WHERE MATCH (`vorname`, `nachname`, `anrede`, `strasse`, `plz`, `ort`, `tel`, `mail`, `geburtstag`, `bemerkung`)
    AGAINST ('Maximilian*' IN BOOLEAN MODE);


    Das funktioniert zwar wie es soll, man kann auch nur 'Max*' eingeben und bekommt trotzdem den Maximilian, aber würde ich jetzt nur 'milian' suchen wollen gitb es keine Treffer. (Blödes Beispiel anhand von Namen ^^ Aber bsp mit Objekten oder Artikeln wär des von Vorteil. Allso bei 'rad' sollte er auch Fahrrad finden.)
    Mit nem LIKE('%rad%') würde das ja gehen allerdings sucht er dann ja nur in einer Spalte. Ich möchte aber alle durchsuchen. Mit LIKE dauert das bei vielen Einträgen schon länger. ^^
    Gibt es da eventuell Alternativen?

    Wenn nicht, würde ich mich wohl damit Zufrieden geben müssen eines der Varianten zu nehmen. (Ungenau oder Langsam o.O)
    Allerdings gibt es mit dem Match-Against ein weiteres Problem:
    Suche ich bsp nach einem Geburtstag oder einer Zahl (kein int, auch als CHAR gespeichert) werden sie auch nicht gefunden. :/
    Bei der Suche nach '10' oder '10.10' von dem Geb. '10.10.1975' findet er nichts. Mach ich '10.10.1' draus dann ja @.@

    Hoffe ihr könnt mir irgend helfen. Verzweifle langsam. xD
    Sollte es nichts geben muss ichs halt alles in Schleifen LIKEn :/
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    Ich bin nicht ganz sicher, kannst du den Namen aber nicht mit * umschließen:
    SELECT * FROM user
    WHERE MATCH (`vorname`, `nachname`, `anrede`, `strasse`, `plz`, `ort`, `tel`, `mail`, `geburtstag`, `bemerkung`)
    AGAINST ('*Maximilian*' IN BOOLEAN MODE);

    also davor und dahinter ein Stern(bso: '*max*'? Für Volltextsuchen wird das so gemacht, dann sollte es hier eigntlich auch gehen. Oder hast du das schon probiert?

    Bei den Zeichen die du Verwendest musst du vllt aufpassen, ob hier die Regex angewendet wird. Normalerweise muss man in SQL Schreiben: REGEX '^Max' , um alles mit "Max" am anfang zu finden. Darum bin ich unsicher. Der Stern * deutet für mich aber darauf hin. Vllt hat es damit ja was zu tun?

    Liebe Grüße
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!