2010-12-15 11 views
3

Ich habe eine Datenbank namens "Produkte" und einen FULLTEXT Index mit den Spalten: title und description. Alle meine Produkte sind Schmierstoffe (Öle), und es gibt zwei Arten davon: Industrie und Auto-Moto, mit einer Rate von 55% -45%. Wenn ich nach Auto-Moto-Ölen suche, wird es keine Ergebnisse zurückgeben, weil das "Auto-Moto" -Schlüsselwort in mehr als der Hälfte der Reihen vorhanden ist, und die Öle in allen, also setzt die MySQL in die STOPWORDS Liste.MySQL Volltext Stoppwörter Problem

Ich benutze PHP. Wie kann ich diese Abfrage machen, um die richtigen Ergebnisse zurückzugeben?

+0

Sie bei der Diagnose Sie Zugriff auf die Server-Konfiguration hat? Sie sollten in der Lage sein, eine benutzerdefinierte Liste von Stoppwörtern festzulegen. – nico

+2

@nico, die in diesem Fall nicht helfen: Das Wort wird automatisch auf die Stoppwortliste wegen seiner Häufigkeit hinzugefügt –

+0

@Pekka: ah OK, ich wusste nicht, dass das auch passiert, wenn Sie eine benutzerdefinierte Stoppwortliste angegeben. – nico

Antwort

2

Die Antwort ist IN BOOLEAN MODE. Wenn Sie den booleschen Modus verwenden, ignoriert mysql, dass der Schlüssel in mehr als 50% der Zeilen vorhanden ist. In der gleichen Zeit hat es eine sehr starke und nützliche Fähigkeit: AGAINST ('*key*').

0

Könnte es sein, weil Auto-Moto enthält ein Zeichen "-", die nach http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html a, NICHT Suche führt so werden alle Zeilen mit "auto", aber nicht "moto"

versuchen Suche nach „auto moto "

auch Sie können die tatsächlichen SQL schreiben Sie verwenden, könnte helfen, das Problem