Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara melakukan pencocokan fuzzy nama perusahaan di MYSQL dengan PHP untuk pelengkapan otomatis?

Anda dapat mulai menggunakan SOUNDEX() , ini mungkin akan melakukan apa yang Anda butuhkan (saya membayangkan kotak saran otomatis dari alternatif yang sudah ada untuk apa yang diketik pengguna).

Kekurangan SOUNDEX() adalah:

  • ketidakmampuannya untuk membedakan string yang lebih panjang. Hanya beberapa karakter pertama yang diperhitungkan, string yang lebih panjang yang menyimpang di akhir menghasilkan nilai SOUNDEX yang sama
  • faktanya huruf pertama harus sama atau kamu tidak akan menemukan kecocokan dengan mudah. SQL Server memiliki fungsi DIFFERENCE() untuk memberi tahu Anda berapa banyak dua nilai SOUNDEX yang terpisah, tapi menurut saya MySQL tidak memiliki bawaan semacam itu.
  • untuk MySQL, setidaknya menurut dokumen , SOUNDEX rusak untuk input unicode

Contoh:

SELECT SOUNDEX('Microsoft')
SELECT SOUNDEX('Microsift')
SELECT SOUNDEX('Microsift Corporation')
SELECT SOUNDEX('Microsift Subsidary')

/* all of these return 'M262' */

Untuk kebutuhan lebih lanjut, saya rasa Anda perlu melihat Jarak Levenshtein (juga disebut "edit jarak") dari dua string dan bekerja dengan ambang batas. Ini adalah solusi yang lebih kompleks (=lebih lambat), tetapi memungkinkan fleksibilitas yang lebih besar.

Kelemahan utama adalah, Anda memerlukan kedua string untuk menghitung jarak di antara keduanya. Dengan SOUNDEX Anda dapat menyimpan SOUNDEX yang telah dihitung sebelumnya di tabel Anda dan membandingkan/mengurutkan/mengelompokkan/menyaringnya. Dengan jarak Levenshtein, Anda mungkin menemukan bahwa perbedaan antara "Microsoft" dan "Nzcrosoft" hanya 2, tetapi akan membutuhkan lebih banyak waktu untuk mencapai hasil itu.

Bagaimanapun, contoh fungsi jarak Levenshtein untuk MySQL dapat ditemukan di codejanitor.com:Jarak Levenshtein sebagai Fungsi Tersimpan MySQL (10 Februari 2007) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TEMUKAN_IN_SET() vs IN()

  2. Bagaimana cara mengonversi epoch ke stempel waktu mySQL di JAVA

  3. Hosting MySQL di Azure, Layanan Cloud Database Terkelola Sepenuhnya Diluncurkan di ScaleGrid

  4. MySQL:Cara Mendapatkan Panjang Teks Dalam Kolom

  5. Grup MySQL oleh SUM