Проблемът с правописната грешка е труден, ако не и невъзможен, за разрешаване добре в чист MySQL.
FULLTEXT
с няколко колони търсенето не е толкова лошо.
Вашата заявка ще изглежда така...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Той ще произведе куп резултати, подредени според това, което MySQL предполага, че е най-вероятният удар на първо място. Предположенията на MySQL не са големи, но обикновено са адекватни.
Ще ви трябва FULLTEXT
индекс, съответстващ на списъка с колони във вашия MATCH()
клауза. Създаването на този индекс изглежда така.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Независимо от коментарите във вашия въпрос, вие просто се нуждаете от индекс за групата от колони, които ще търсите.
20 000 реда няма да бъдат голямо бреме за който и да е нов сървърен хардуер.
Правописна грешка:можете да опитате SOUNDEX()
, но това е алгоритъм от началото на 20-ти век, създаден от Bell System, за да търси имена на хора на американски английски. Той е проектиран да получава много фалшиви положителни резултати и наистина е по-глупав от кофа с камъни.
Ако наистина имате нужда от корекция на правописа, може да се наложи да проучите Sphinx.