Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melaksanakan Padanan Fuzzy yang Cekap untuk Nama Syarikat dalam PHP dan MySQL?

Bagaimanakah Saya Boleh Melaksanakan Padanan Fuzzy yang Cekap untuk Nama Syarikat dalam PHP dan MySQL?

Susan Sarandon
Lepaskan: 2024-12-06 02:56:09
asal
622 orang telah melayarinya

How Can I Implement Efficient Fuzzy Matching for Company Names in PHP and MySQL?

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:

  • Ia menekankan beberapa aksara pertama, yang berpotensi membawa kepada padanan palsu untuk rentetan yang lebih panjang.
  • Ia memerlukan huruf pertama nama untuk sama, mengehadkan ketepatannya untuk syarikat dengan aksara awal yang berbeza.
  • Ia mungkin tidak berfungsi dengan betul dengan bukan Latin aksara.

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
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan