Il problema dell'errore di ortografia è difficile, se non impossibile, da risolvere bene in MySQL puro.
Il FULLTEXT
a più colonne la ricerca non è così male.
La tua richiesta sarà simile a questa...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Produrrà una serie di risultati, ordinati in base a ciò che MySQL ritiene sia il primo colpo più probabile. Le ipotesi di MySQL non sono ottime, ma di solito sono adeguate.
Avrai bisogno di un FULLTEXT
indice corrispondente all'elenco di colonne nel tuo MATCH()
clausola. La creazione di quell'indice è simile a questa.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Nonostante i commenti nella tua domanda, hai solo bisogno di un indice per il gruppo di colonne che cercherai.
20.000 righe non saranno un grosso onere per l'hardware del server vintage recente.
Errore di ortografia:puoi provare SOUNDEX()
, ma è un algoritmo dell'inizio del XX secolo progettato dal Bell System per cercare i nomi delle persone nell'inglese americano. È progettato per ottenere molti falsi positivi ed è davvero più stupido di un secchio di sassi.
Se hai davvero bisogno della correzione ortografica, potresti dover indagare sulla Sfinge.