2012-04-10 9 views
1

Ich habe eine MySQL MyISAM-Tabelle, die Einträge enthält, die Flughäfen beschreiben. Diese Tabelle enthält 3 varchar Spalten - Code, Name und Tags.Ist MySQL FULLTEXT die beste Lösung für Teilwörter?

Code bezieht sich auf den Flughafen-Code (wie JFK und ORD), der Name bezieht sich auf den Namen des Flughafens (John F. Kennedy und O'Hare) und Tags geben eine durch Semikolon getrennte Liste von Tags, die dem Flughafen zugeordnet sind (wie NYC, New York und Chicago;).

Ich muss in der Lage sein, einen Flughafen (für eine automatische Vervollständigung) entweder durch den Code, den Namen oder die Tags nachzuschlagen, deshalb setze ich einen FULLTEXT-Index ein (Code, Name, Tags).

mir zwei Probleme mit FULLTEXT- begegnet ist so weit, die mich von der Arbeit mit ihm zu vermeiden:
1. Es gibt keine Möglichkeit, eine teilweise Übereinstimmung zu tun - nur passende postfix (ist das wahr?)
2. Wenn eine Periode ('.') wird in dem Begriff angegeben, um zu passen, die Übereinstimmung funktioniert anders. Ich gehe davon aus, dass die Periode auf eine besondere Art geparst wird. Wenn Sie beispielsweise eine FULLTEXT-Suche auf N.Y.C ausführen, wird JFK nicht zurückgegeben, obwohl die gleiche Suche in New York

Gibt es trotzdem diese Barrieren zu überwinden? Sonst, sollte ich like stattdessen suchen, oder eine völlig andere Speicher-Engine? Vielen Dank!

+1

Volltext ist für natürliche Sprache konzipiert. Es wird sich nicht gut auf Codes oder Abkürzungen verhalten. Mein Rat ist, dass Sie beide Ansätze kombinieren. –

+0

ja. FULLTEXT UNION scheint am besten zu funktionieren. Vielen Dank! – user1094786

Antwort

1

Die beste Lösung, die ich entwickelte, ist die Verwendung von FULLTEXT und ähnlichem Vergleich und die Verwendung von UNION für die Ergebnisse.

Verwandte Themen