Problém s překlepem je těžké, ne-li nemožné, dobře vyřešit v čistém MySQL.
FULLTEXT
s více sloupci vyhledávání není tak špatné.
Váš dotaz bude vypadat nějak takto ...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Vytvoří hromadu výsledků seřazených podle toho, co MySQL odhaduje jako nejpravděpodobnější zásah jako první. Odhady MySQL nejsou skvělé, ale obvykle jsou dostatečné.
Budete potřebovat FULLTEXT
index odpovídající seznamu sloupců v MATCH()
doložka. Vytvoření tohoto indexu vypadá takto.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Bez ohledu na komentáře ve vaší otázce potřebujete pouze index pro skupinu sloupců, které budete prohledávat.
20 000 řádků nebude velkou zátěží pro žádný serverový hardware poslední doby.
Překlep:Můžete zkusit SOUNDEX()
, ale je to algoritmus z počátku 20. století navržený Bellovým systémem k vyhledávání jmen lidí v americké angličtině. Je navržen tak, aby získal mnoho falešně pozitivních zásahů, a opravdu je hloupější než kýbl kamení.
Pokud opravdu potřebujete opravu kouzla, možná budete muset prozkoumat Sphinx.