Rafael: MySQL: Fulltext-Index (Versändnisfrage)

Hallo,

ich habe eine Frage zum Fulltext-Index.
Durch das MATCH () AGAINST ()-Statement wird ein Fulltext-Index bekanntlich nach allen passenden Suchbegriffen durchforstet. Nun Frage ich mich, ob es ein Ambivalent zu dem LIKE-Escapezeichen % gibt.

Momentan habe ich nämlich das Problem, dass die Suche durch den Fulltext-Index zwar schneller geworden ist; sofern jemand aber nicht ein exaktes Wort in die Suchmaske eingibt, ein entsprechender Eintrag nicht gefunden wird.

Ich möchte es den Nutzern aber ermöglichen mit einem * Symbol alles zu finden, dass die gewählte Zeichenfolge beinhaltet.

Also dass aus der Satz "eins zwei" mit der Sucheingabe "ein*" bzw. "zwe*" auch gefunden wird. Wie muss ich das SQL-Statement in diesem Fall denn formulieren?

Der Fulltext-Index sollte doch dann die folgenden Wörter aufgenommen haben:

eins
zwei

Insofern sollte er nach meinem Verständnis auch nach "ein*" suchen können.

Oder muss ich in diesen Fällen trotzdem auf LIKE zurückgreifen und der Index wird dennoch genutzt? Bzw. habe ich dann das Problem, dass bei LIKE 'zwe%' die Zeile nicht gefunden wird, der Index also scheinbar doch nicht genutzt wird.

Danke für Aufklärung!

  1. hi,

    Ich möchte es den Nutzern aber ermöglichen mit einem * Symbol alles zu finden, dass die gewählte Zeichenfolge beinhaltet.

    Das ist nur eingeschränkt möglich - mittels such* kannst du nach allen Wörtern suchen lassen, die mit such beginnen.
    *such ist aber m.W. nicht möglich.

    http://dev.mysql.com/doc/refman/4.1/en/fulltext-boolean.html

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke für den Link. Hatte in der Doku zwar schon gesucht, mich aber scheinbar nicht weit genug durchgeklickt.
      Grüße.