2012-03-28 3 views
3
SELECT * FROM mytable WHERE match(fieldname) against('spa') 

Ich verstehe nicht, warum diese Abfrage keine Ergebnisse zurückgibt. Es sollte mindestens 10 Zeilen mit dem Wort Spa in finden. Spa ist kein Stichwort/Stoppwort, oder?MYSQL Match-Beispiel funktioniert nicht. Ist "Spa" ein Stoppwort?

+2

Brauchen Sie nicht min. 4 Zeichen Wort für Spiel gegen? – matino

+0

Haben Sie einen Volltextindex für 'Feldname'? Ist die Spalte Groß-/Kleinschreibung? – DaveRandom

+0

Danke. Das macht Sinn, aber anstatt die Systemvariable zurückzusetzen, füge ich Ausnahmen zu 3-stelligen Schlüsselwörtern in meinen Code ein. – Harry

Antwort

5

Die minimale und maximale Länge der zu indizierenden Wörter wird durch die Systemvariablen ft_min_word_len und ft_max_word_len definiert. Der Standardminimalwert ist vier Zeichen; Das Standardmaximum ist versionsabhängig. Wenn Sie einen der beiden Werte ändern, müssen Sie Ihre FULLTEXT-Indizes neu erstellen. Zum Beispiel, wenn Sie drei Zeichen Worte wollen durchsuchbar sein, können Sie die ft_min_word_len Variable, indem Sie die folgenden Zeilen in einer Optionsdatei:

[mysqld] 
ft_min_word_len=3 

dann den Server neu starten und Ihre FULLTEXT- Indizes neu erstellen. Beachten Sie besonders die Bemerkungen bezüglich myisamchk in der Anleitung, die dieser Liste folgt.

Quelle: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

0

Nein, Spa ist nicht eines der Standard-Stoppwörter, aber es gibt eine minimale Wortlänge in der MySQL-Volltextsuche, die ich standardmäßig auf 4 glauben: ft_min_word_length

0

Es gibt eine Mindestlänge von vier Zeichen für die Suche. Es scheint jedoch, dass die Suchfunktion

verändert werden kann

Fine-Tuning MySQL Full-Text Search

MySQL Volltextsuche Fähigkeit hat einige benutzer einstellbare Parameter. Sie können mehr Kontrolle über Volltext-Suchverhalten ausüben, wenn Sie eine MySQL-Quelldistribution haben, weil einige Änderungen Codeänderungen der Quelle erfordern. Siehe Abschnitt 2.17, "MySQL von der Quelle installieren".

Beachten Sie, dass die Volltextsuche sorgfältig auf die Effektivität der meisten abgestimmt ist. Wenn das Standardverhalten in den meisten Fällen geändert wird, kann die Effektivität sogar um verringert werden. Verändern Sie die MySQL-Quellen nicht, es sei denn, Sie wissen, was Sie tun.

Die meisten in diesem Abschnitt beschriebenen Volltextvariablen müssen auf Server-Startzeit eingestellt sein. Ein Serverneustart ist erforderlich, um sie zu ändern. Sie können nicht geändert werden, während der Server ausgeführt wird.

Einige Variablenänderungen erfordern, dass Sie die FULLTEXT-Indizes in Ihre Tabellen neu erstellen. Anweisungen dazu finden Sie später in diesem Abschnitt Abschnitt.

Die minimale und maximale Länge der zu indexierenden Wörter wird durch die Systemvariablen ft_min_word_len und ft_max_word_len definiert. (Siehe Abschnitt 5.1.3, "Server Systemvariablen".) Der voreingestellte Mindestwert ist vier Zeichen; Das Standardmaximum ist versionsabhängig. Wenn Sie den Wert ändern, müssen Sie Ihre FULLTEXT-Indizes neu erstellen.Zum Beispiel, wenn Sie dreistellige Worte durchsuchbar sein wollen, können Sie das ft_min_word_len Variable, indem Sie die folgenden Zeilen in einer Option -Datei festgelegt:

[mysqld] 
ft_min_word_len=3 

dann den Server neu starten und wieder aufbauen Ihre FULLTEXT Indizes. Beachten Sie besonders die Anmerkungen bezüglich myisamchk in die Anweisungen, die dieser Liste folgen.