2012-05-09 6 views
6

Ich habe eine Tabelle places(name vachar(50), address text, description text) engine = MYISAM und einige Datensätze.MySQL: Irgendwas stimmt nicht mit Volltextsuche - Rückgabe keine Ergebnisse

Ich habe versucht, ein Beispiel in here zu machen !, und Suche nach dem "Volltext-Problem", aber ich habe nicht klar über Volltextsuche.

Zuerst fügen ich einen Volltextindex von:

ALTER TABLE places ADD FULLTEXT(name, address, description); 

und versuchen mySQL:

SELECT * FROM places WHERE MATCH(name,address,description) AGAINST('my search key'); 

ich habe versuchen einige ‚meine Suchschlüssel‘, dass der Inhalt in vielen Bereich ist, aber es gibt einige Fälle, die ich bekam:

  • jetzt Zeile ausgewählt.

  • Wenn ich versuche add option "IN BOOLEAN MODE" in AGAINST(), Ergebnis mit Score = 1 erhalten, ist es bedeutungslos, wenn ich es sortiere.

  • es zeigt nur das Ergebnis, wenn der "Suchschlüssel" Inhalt in Feld (Name) hat.

Ich habe versucht, viel Art und Weise, aber ich kann mich nicht erinnern, alle Fälle,

Jede Antwort helfen könnte!

Vielen Dank im Voraus!

+0

zu bedienen Was ist dein Schlüsselwort? http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html –

+0

Vielen Dank Marcus, mein Problem im Suchschlüssel mit stop_word und default ft_min_word_len. – dorign

+0

Cool.Ich habe den Titel Ihrer Frage aktualisiert, um sie zu klären und eine Antwort hinzuzufügen. –

Antwort

5

Stellen Sie sicher, dass Ihr Schlüsselwort kein stop word ist. Um auf disable or modify the stop word list zuzugreifen, müssen Sie Systemvariablen einrichten und den Server neu starten.

Stellen Sie außerdem sicher, dass Ihr Schlüsselwort die minimum full text word length erfüllt. Die Standardminimallänge ist 4.

Stellen Sie abschließend sicher, dass das Wort in weniger als 50% der Datensätze angezeigt wird. MySQL gibt keine Ergebnisse zurück, wenn das Wort in 50% oder mehr der Datensätze vorkommt.

+0

O.M.G. !!! Ich habe eine Stunde lang an einem 2-Platten-Tisch getestet. @ * & $ #%^$%! +9001 - und nein Ich sehe das Wort "Prozent" '%' nicht in der Dokumentation: https://dev.mysql.com/doc/refman/5.7/de/fulltext-search.html – ebyrob

1

Neben Marcus' Antwort:

Als ich anfing, mit FULLTEXT- Indizes in MySQL, ich Probleme mit leeren Ergebnisse hatte - ich Stoppwörter vermied und auch lang genug, um diejenigen, wurde mit, so war ich Kopf- kratzen ein wenig, bis ich dies in der MySQL documentation begraben gefunden:

die Schwelle von 50% hat eine erhebliche Auswirkung, wenn Sie zunächst versuchen, die Volltextsuche, um zu sehen, wie es funktioniert: Wenn Sie eine Tabelle erstellen, und fügen Sie nur ein oder zwei Zeilen Text hinein, jedes Wort im Text erscheint in mindestens 50% der Zeilen. Daher gibt keine Suche Ergebnisse zurück. Stellen Sie sicher, dass Sie mindestens drei Zeilen einfügen, und vorzugsweise viele mehr. Benutzer, die die 50% Einschränkung umgehen, müssen den boolean Suchmodus

Dies auch verwenden erklärt, warum Sie Ergebnisse bekommen (aber mit einer „sinnlosen“ score), wenn Sie die Abfrage gesetzt IN BOOLEAN MODE

+0

+1 für das Sein derjenige, der das gefunden hat. Und ein großes Lob für den Hinweis auf den sehr obskuren Speicherort der Dokumentation. Ich schwöre bei allem, was immer noch Oracle ist, dass der Boolesche Modus auch nicht funktioniert hat bis ** nach ** Ich lese diese Seite. Aber vielleicht war das nur meine Neigung, anfänglich nach Dingen wie 'foo' zu suchen ... Ich meine, mein LETZTER NAME ist 3 Buchstaben. – ebyrob

Verwandte Themen