Ich versuche, eine Volltextsuche mit mysql, um eine Zeichenfolge zu finden. Das Problem ist, dass es an erster Stelle seltsame Ergebnisse liefert.MySQL Match Volltext
Zum Beispiel: 'Passat 2.0 tdi' die Zeichenfolge:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'passat 2.0 tdi' WITH QUERY EXPANSION
)
dies als erstes Ergebnis zurückkehrt (die anderen sind in Ordnung):
Volkswagen Passat Variant 1.9 TDI- ANO 2003
wich ist falsch, da nicht da ist "2.0" in diesem Beispiel.
Was könnte es sein?
bearbeiten: Auch, da dies wahrscheinlich eine große Datenbank sein wird (erwartet bis zu 500.000 Datensätze), wird diese Suchmethode die beste für sich sein, oder wäre es besser, jede andere Suchmaschine wie Sphinx zu installieren? Oder falls nicht, wie kann man relevante Ergebnisse zeigen?
edit2: Für die Aufzeichnung trotz der Frage markiert werden als beantwortet, das Problem mit den MySQL-Trennzeichen bestehen bleibt, also wenn jemand einen Vorschlag, hat, wie Trennzeichen zu entkommen, wäre es die 500 Punkte geschätzt und Wert wird bei Anteil. Die sollution Ich fand das Suchresultates erhöhen wurde mit QUERY EXPANSION mit IN BOOLEAN MODE zu ersetzen, Operatoren, den Motor zu zwingen, die Worte ich brauchte, wie:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'+passat +2.0 +tdi' IN BOOLEAN MODE
)
Es überhaupt nicht lösen, aber zumindest die Relevanz der Ergebnisse hat sich signifikant verändert.
+1 Ich kann nicht denken, warum dies negativ gewählt wurde. Sehr richtig. '2.0' maskiert oder nicht wird ignoriert, außer die serverweiten Standardeinstellungen wurden für' FULLTEXT' Indizes geändert. – Orbling
@Yoda: Lesen Sie hier, besonders über 'ft_max_word_len': http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html – Orbling
irgendwelche Vorschläge, wie man chars entkommen kann? Ich habe '\' versucht, ohne Erfolg. – yoda