Nama Syarikat Padanan Fuzzy untuk Auto-Melengkapkan Input dengan PHP dan MySQL
Pengguna sering mengimport senarai nama syarikat yang banyak, yang boleh menyebabkan kelewatan dengan padanan rentetan langsung kerana saiz pangkalan data yang semakin meningkat. Mengoptimumkan proses ini dan menyediakan pengguna dengan cadangan masa nyata semasa mereka menaip memerlukan pendekatan yang lebih cekap.
Fuzzy Matching dengan Soundex
Satu penyelesaian yang berpotensi ialah mengindeks syarikat nama menggunakan fungsi SOUNDEX(). Fungsi ini menukar rentetan kepada perwakilan fonetik, dengan berkesan mengumpulkan nama yang serupa bunyi bersama-sama. Walaupun SOUNDEX agak pantas, ia mempunyai had:
Jarak Levenshtein untuk Padanan Lebih Lanjut
Untuk padanan kabur yang lebih tepat, pertimbangkan jarak Levenshtein, yang mengukur bilangan suntingan (sisipan, pemadaman , atau penggantian) yang diperlukan untuk mengubah satu rentetan kepada rentetan yang lain. Ini membolehkan fleksibiliti yang lebih besar tetapi lebih mahal dari segi pengiraan.
Menggabungkan Pendekatan untuk Keputusan Optimum
Bergantung pada keperluan khusus anda, anda mungkin mahu menggunakan SOUNDEX untuk auto- lengkapkan cadangan dan kembali ke jarak Levenshtein untuk perlawanan yang lebih halus. Pendekatan hibrid ini memberikan keseimbangan antara kelajuan dan ketepatan.
Contoh Penggunaan dalam PHP
// Calculate Soundex code for company names $stmt = $mysqli->prepare("SELECT company_id, SOUNDEX(name) FROM companies"); $stmt->execute(); $result = $stmt->get_result(); // Get user input and convert to Soundex $userInput = "Microsift"; $userInputSoundex = soundex($userInput); // Query for matching company IDs $stmt = $mysqli->prepare("SELECT company_id FROM companies WHERE SOUNDEX(name) = ?"); $stmt->bind_param("s", $userInputSoundex); $stmt->execute(); $result = $stmt->get_result(); // Further refine results using Levenshtein distance (optional) while ($row = $result->fetch_assoc()) { $companyId = $row['company_id']; $levenshteinDistance = levenshtein($userInput, $row['name']); if ($levenshteinDistance < 3) { // Consider as a match } }
Dengan memanfaatkan teknik ini, anda boleh melaksanakan sistem padanan kabur yang sangat berkesan yang meningkatkan pengalaman pengguna dan mengoptimumkan prestasi pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Padanan Fuzzy yang Cekap untuk Nama Syarikat dalam PHP dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!