Masalah salah eja sulit, jika bukan tidak mungkin, untuk dipecahkan dengan baik di MySQL murni.
Beberapa kolom FULLTEXT
pencarian tidak terlalu buruk.
Permintaan Anda akan terlihat seperti ini ...
SELECT column, column
FROM table
WHERE MATCH(Company, FirstName, LastName, whatever, whatever)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
Ini akan menghasilkan banyak hasil, diurutkan berdasarkan tebakan MySQL yang paling mungkin terkena terlebih dahulu. Tebakan MySQL tidak bagus, tapi biasanya cukup.
Anda memerlukan FULLTEXT
indeks yang cocok dengan daftar kolom di MATCH()
. Anda ayat. Membuat indeks itu terlihat seperti ini.
ALTER TABLE book
ADD FULLTEXT INDEX Fulltext_search_index_1
(Company, FirstName, LastName, whatever, whatever);
Komentar dalam pertanyaan Anda meskipun, Anda hanya perlu indeks untuk grup kolom yang akan Anda cari.
20K baris tidak akan menjadi beban besar pada perangkat keras server kuno mana pun.
Salah eja:Anda dapat mencoba SOUNDEX()
, tetapi ini adalah algoritme awal abad ke-20 yang dirancang oleh Sistem Bell untuk mencari nama orang dalam bahasa Inggris Amerika. Ini dirancang untuk mendapatkan banyak hit positif palsu, dan itu benar-benar lebih bodoh daripada seember batu.
Jika Anda benar-benar membutuhkan koreksi ejaan, Anda mungkin perlu menyelidiki Sphinx.