Das Rechtschreibproblem ist schwer, wenn nicht gar unmöglich, in reinem MySQL gut zu lösen.
Der mehrspaltige FULLTEXT
Suche ist gar nicht so schlecht.
Ihre Abfrage sieht in etwa so aus ...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Es wird eine Reihe von Ergebnissen erzeugen, geordnet nach dem, was MySQL als den wahrscheinlichsten Treffer ansieht. Die Vermutungen von MySQL sind nicht großartig, aber normalerweise ausreichend.
Sie benötigen einen FULLTEXT
Index, der mit der Liste der Spalten in Ihrem MATCH()
übereinstimmt Klausel. Das Erstellen dieses Index sieht folgendermaßen aus.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Ungeachtet der Kommentare in Ihrer Frage benötigen Sie nur einen Index für die Gruppe von Spalten, die Sie durchsuchen werden.
20.000 Zeilen werden keine große Belastung für die neueste Serverhardware darstellen.
Rechtschreibfehler:Sie könnten es mit SOUNDEX()
versuchen , aber es ist ein Algorithmus aus dem frühen 20. Jahrhundert, der vom Bell-System entwickelt wurde, um die Namen von Personen in amerikanischem Englisch nachzuschlagen. Es wurde entwickelt, um viele falsch positive Treffer zu erzielen, und es ist wirklich dümmer als ein Eimer voller Steine.
Wenn Sie wirklich eine Rechtschreibkorrektur benötigen, müssen Sie Sphinx untersuchen.