Problem z błędami pisowni jest trudny, jeśli nie niemożliwy, do rozwiązania w czystym MySQL.
Wielokolumnowy FULLTEXT
wyszukiwanie nie jest takie złe.
Twoje zapytanie będzie wyglądać mniej więcej tak ...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Spowoduje to wygenerowanie szeregu wyników, uporządkowanych według tego, które domysły MySQL są najbardziej prawdopodobnymi trafieniami w pierwszej kolejności. Domysły MySQL nie są świetne, ale zazwyczaj są wystarczające.
Będziesz potrzebować FULLTEXT
indeks pasujący do listy kolumn w MATCH()
klauzula. Tworzenie tego indeksu wygląda tak.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Niezależnie od komentarzy w twoim pytaniu, potrzebujesz tylko indeksu dla grupy kolumn, które będziesz przeszukiwać.
20 tys. wierszy nie będzie dużym obciążeniem dla żadnego ze starszych urządzeń serwerowych.
Błędna pisownia:możesz spróbować SOUNDEX()
, ale jest to algorytm z początku XX wieku zaprojektowany przez Bell System do wyszukiwania nazwisk ludzi w amerykańskim angielskim. Został zaprojektowany, aby uzyskać wiele fałszywych trafień i jest naprawdę głupszy niż wiadro kamieni.
Jeśli naprawdę potrzebujesz korekty pisowni, być może będziesz musiał zbadać Sfinksa.