Le problème de faute d'orthographe est difficile, voire impossible, à bien résoudre en MySQL pur.
Le FULLTEXT
à plusieurs colonnes la recherche n'est pas si mal.
Votre requête ressemblera à ceci...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Cela produira un tas de résultats, classés par ce que MySQL suppose être le premier résultat le plus probable. Les suppositions de MySQL ne sont pas excellentes, mais elles sont généralement adéquates.
Vous aurez besoin d'un FULLTEXT
index correspondant à la liste des colonnes dans votre MATCH()
clause. La création de cet index ressemble à ceci.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Nonobstant les commentaires dans votre question, vous avez juste besoin d'un index pour le groupe de colonnes que vous allez rechercher.
20 000 lignes ne constitueront pas un gros fardeau pour les serveurs récents.
Faute d'orthographe :vous pouvez essayer SOUNDEX()
, mais c'est un algorithme du début du XXe siècle conçu par le système Bell pour rechercher les noms des personnes en anglais américain. Il est conçu pour obtenir de nombreux faux positifs, et il est vraiment plus stupide qu'un seau de pierres.
Si vous avez vraiment besoin d'une correction orthographique, vous devrez peut-être enquêter sur Sphinx.