php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MySQL Full-Text Search


 
Berni
19-09-2011, 12:10 
 
Hallo zusammen,

ich versuche die Full-Textsuche in mySQL zu optimieren.
Ich habe bereits die ft_min_word_len auf 3 gesetzt und ft_stopword_file auf ''
Leider blieb der erhofte Erfolg aus.
Wörter wie B-Ware oder first werden immer noch nicht gefunden.

Was kann man noch tun?

 
AmicaNoctis
19-09-2011, 12:23 
 
Hallo,

zeig mal bitte das CREATE TABLE-Statement und das SELECT-Statement, mit dem das nicht funktioniert.

Gruß,

Amica

 
Berni
19-09-2011, 14:11 
 
SELECT * FROM `ad_search` WHERE MATCH (STEXT) AGAINST ('B-Ware')

CREATE TABLE ad_search (
ID_AD_SEARCH BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
FK_AD BIGINT(20) UNSIGNED NOT NULL,
FK_USER BIGINT(20) UNSIGNED NOT NULL,
LANG VARCHAR(3) NOT NULL,
AD_TABLE VARCHAR(100) NOT NULL,
STEXT LONGTEXT NULL,
PRIMARY KEY (ID_AD_SEARCH),
INDEX FK_AD (FK_AD),
INDEX lang (LANG),
INDEX user (FK_USER),
FULLTEXT INDEX suchen (STEXT)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
AUTO_INCREMENT=829;

 
Berni
19-09-2011, 14:48 
 
Hallo zusammen,

ich versuche die Full-Textsuche in mySQL zu optimieren.
Ich habe bereits die ft_min_word_len auf 3 gesetzt und ft_stopword_file auf ''
Leider blieb der erhofte Erfolg aus.
Wörter wie B-Ware oder first werden immer noch nicht gefunden.

Was kann man noch tun?

Den mySQL Server sollte man auch neu starten ;)
Was allerdings nicht geht, ist die Sache mit B-Ware.
Wir haben jetzt alle Vorkommen von "-" durch "_" ersetzt und siehe da. Es läuft :)

 
AmicaNoctis
19-09-2011, 15:10 
 
Okay, dann weiß ich, woran es lag. Wenn du eine Boolean Full-Text-Suche gemacht hast, hättest du den Begriff in doppelte Anführungszeichen setzen müssen (AGAINST ('"B-Ware"' IN BOOLEAN MODE)). Bei einer nicht-bool'schen Suche kannst du es nicht ändern, dass er das Bindestrich-Minus als Worttrenner betrachtet.

 
Berni
20-09-2011, 09:40 
 
Danke AmicaNoctis,

ich dachte das hätten wir gemacht. Ich werde das Script nochmals ändern und mal schauen was uns die Volltextsuche dann liefert.

thx
berni


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:21 Uhr.