Felstavningsproblemet är svårt, för att inte säga omöjligt, att lösa bra i ren MySQL.
Flerkolumnen FULLTEXT
sökning är inte så illa.
Din fråga kommer att se ut ungefär så här ...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Det kommer att producera ett gäng resultat, sorterade efter vad MySQL gissar är den mest troliga träffen först. MySQL:s gissningar är inte bra, men de är vanligtvis tillräckliga.
Du behöver en FULLTEXT
index som matchar listan med kolumner i din MATCH()
klausul. Att skapa det indexet ser ut så här.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Trots kommentarerna i din fråga behöver du bara ett index för den grupp av kolumner som du ska söka efter.
20 000 rader kommer inte att vara en stor börda för någon serverhårdvara av den senaste tiden.
Felstavning:Du kan prova SOUNDEX()
, men det är en algoritm från tidigt 1900-tal designad av Bell System för att slå upp folks namn på amerikansk engelska. Den är designad för att få många falska positiva träffar, och den är verkligen dummare än en hink med stenar.
Om du verkligen behöver stavningskorrigering kan du behöva undersöka Sphinx.