လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Fuzzy Searching လုပ်ရန် Levenhhtein function ကိုမည်သို့အသုံးပြုရမည်နည်း။ ခန့်မှန်းကိုက်ညီမှုရရှိရန် PHP ကျွမ်းကျင်မှု

Fuzzy Searching လုပ်ရန် Levenhhtein function ကိုမည်သို့အသုံးပြုရမည်နည်း။ ခန့်မှန်းကိုက်ညီမှုရရှိရန် PHP ကျွမ်းကျင်မှု

gitbox 2025-06-09

စာသားနှင့်ကိုက်ညီမှုနှင့်ရှာဖွေခြင်းကိုပြုလုပ်သောအခါကျွန်ုပ်တို့သည်တူညီသောပွဲများကိုအတိအကျမလိုအပ်ပါ။ PHP သည်ဤရည်မှန်းချက်အောင်မြင်ရန်နှင့် fuzzy ရှာဖွေမှုများကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည့်အလွန်အဆင်ပြေသော functionttein ကိုထောက်ပံ့ပေးသည်။ ယနေ့ကျွန်ုပ်တို့သည် Fuzzy Search ကိုရှာဖွေရန်နှင့် PHP မှတစ်ဆင့်အနီးစပ်ဆုံးကိုက်ညီမှုကိုရရှိရန် Levenshiptein function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးမည်။

Levenhtein အကွာအဝေးကဘာလဲ?

Levenhtein အကွာအဝေး (Edit Fase ဟုလည်းခေါ်) သည်ကြိုးနှစ်ချောင်းအကြားခြားနားချက်ကိုညွှန်ပြချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် string တစ်ခုသို့အနည်းဆုံးတည်းဖြတ်ခြင်းလုပ်ငန်းများ (အစားထိုး, အစားထိုးခြင်း, အစားထိုးခြင်း) နှင့်အခြားတစ်ခုသို့ပြောင်းရန်လိုအပ်သောအဆင့်များအရေအတွက်ကိုကိုယ်စားပြုသည်။ အကွာအဝေးသေးငယ်သည်, ကြိုးနှစ်ချောင်းသည် ပို. ဆင်တူသည်။

PHP အတွက် Levenhtein function ကို

PHP တွင် Wevenhtein function ကို striveshtein အကွာအဝေးကို stries နှစ်ခုအကြားအကွာအဝေးကိုတွက်ချက်ရန်အသုံးပြုသည်။ ၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 levenshtein(string $str1, string $str2, int $cost_ins = 1, int $cost_rep = 1, int $cost_del = 1): int
  • $ str1 နှင့် $ str2 သည်နှိုင်းယှဉ်ရန်ကြိုးနှစ်ချောင်းရှိသည်။

  • $ cost_ins များသည် စာလုံးများကိုထည့်သွင်းခြင်း၏ကုန်ကျစရိတ်ကို 1 အထိသတ်မှတ်ခြင်း၏ကုန်ကျစရိတ်ဖြစ်သည်။

  • $ cost_rep သည်စာလုံးများကိုအစားထိုးခြင်း,

  • $ cost_del သည်စာလုံးများကိုဖျက်ခြင်း,

  • Return Value သည် stries နှစ်ခုအကြား Levenhtein အကွာအဝေးဖြစ်သည်။

Levenhtein အကွာအဝေးကိုတွက်ချက်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကြိုးနှစ်ချောင်းအကြားဆင်တူမှုကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ အကွာအဝေးသေးငယ်သည်, ပိုမိုဆင်တူသည်။

Levenshiptein function ကိုမှတစ်ဆင့် fuzzy ရှာဖွေခြင်း

လက်တွေ့ကျသောအပလီကေးရှင်းများ၌ကျွန်ုပ်တို့သည်သော့ချက်စာလုံးကိုရှာဖွေသောအခါ "fuzzy search" function ကိုပေးသည်။ ဆိုလိုသည်မှာကျွန်ုပ်တို့သည်အချိန်အတိအကျမျှသာမဟုတ်ဘဲအသုံးပြုသူမှထည့်သွင်းထားသောရှာဖွေရေးဝေါဟာရများနှင့်ဆင်တူသည့်အကြောင်းအရာများကိုရှာဖွေလိုကြသည်။

1 ။ အခြေခံ fuzzy ရှာဖွေမှုကိုအကောင်အထည်ဖော်

ငါတို့မှာကြိုးပေါင်းများစွာအများကြီးရှိပါတယ်။ အခုဆိုရင်အသုံးပြုသူမှထည့်သွင်းထားသောသော့ချက်စာလုံးများကို အခြေခံ. ထိုအလားတူကြိုးများကိုရှာဖွေရန်လိုအပ်သည်ဆိုပါစို့။ string တစ်ခုချင်းစီနှင့်ရှာဖွေရေးဝေါဟာရတစ်ခုချင်းစီအကြား stringhtein အကွာအဝေးကိုကျွန်ုပ်တို့တွက်ချက်နိုင်ပြီးနေရာများကိုအကွာအဝေးသေးငယ်များဖြင့်ရွေးချယ်နိုင်သည်။

 <?php
$searchTerm = 'apple';  // အသုံးပြုသူများမှဝင်လာသောရှာဖွေရေးဝေါဟာရများ
$items = ['apple pie', 'apple', 'banana', 'grape', 'apricot'];

$threshold = 3;  // အများဆုံးအကွာအဝေးတံခါးခုံကိုသတ်မှတ်ပါ,သေးငယ်တဲ့တင်းကျပ်
$results = [];

foreach ($items as $item) {
    $distance = levenshtein($searchTerm, $item);
    if ($distance <= $threshold) {
        $results[] = $item;  // အကွာအဝေးတံခါးခုံထက်လျော့နည်းသည်ဆိုပါက,ဒါဟာ fuzzy ပွဲစဉ်စဉ်းစားသည်
    }
}

print_r($results);
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် 0 တ်ပြုခြင်းဆိုင်ရာအသုံးအနှုန်းကို Apple နှင့် Element တစ်ခုစီနှင့်ခင်းကျင်းမှုရှိဒြပ်စင်တစ်ခုစီတို့အားတွက်ချက်သည်။ အကယ်. အကွာအဝေးသည် ( 3 ) ခုကဲ့သို့သောတံခါးခုံသည် (သို့) ညီမျှသည်ဆိုပါကထိုပစ္စည်းသည်ရှာဖွေရေးဝေါဟာရနှင့်ဆင်တူသည်ဟုယူဆပြီးရလဒ်ခင်းကျင်းမှုတွင်ထည့်သွင်းထားသည်။

output ကိုဖြစ်လိမ့်မည်:

 Array
(
    [0] => apple pie
    [1] => apple
)

2 ။ sorting နှင့်အတူ fuzzy ရှာဖွေရေးအကောင်အထည်ဖော်

တခါတရံတွင်ကျွန်ုပ်တို့သည်တူညီမှုအားလုံးကိုရှာဖွေရန်သာလိုပေမည်, တွက်ချက်ထားသော Levenhtein အကွာအဝေးကိုခွဲထုတ်ခြင်းဖြင့်ပြုလုပ်နိုင်သည်။

 <?php
$searchTerm = 'apple';  // အသုံးပြုသူများမှဝင်လာသောရှာဖွေရေးဝေါဟာရများ
$items = ['apple pie', 'apple', 'banana', 'grape', 'apricot'];

$results = [];

foreach ($items as $item) {
    $distance = levenshtein($searchTerm, $item);
    $results[] = ['item' => $item, 'distance' => $distance];
}

// အကွာအဝေးအားဖြင့်စီ
usort($results, function ($a, $b) {
    return $a['distance'] - $b['distance'];
});

print_r($results);
?>

ဤဥပမာတွင်ရှာဖွေရေးဝေါဟာရတစ်ခုစီ၏ string တစ်ခုစီ၏ Levenshiptein အကွာအဝေးများကို ဦး စွာတွက်ချက်ပြီးနောက်၎င်းတို့အား Aceliative Array သို့ထည့်သွင်းထားသည်။ ရလဒ်များကိုအကွာအဝေးအားဖြင့်ခွဲရန် abort function ကိုသုံးပါ။ အနည်းဆုံးအကွာအဝေးရှိသောပစ္စည်းများသည်ပထမနေရာတွင်ရှိသည်။

ရလဒ်ရလဒ် -

 Array
(
    [0] => Array
        (
            [item] => apple
            [distance] => 0
        )

    [1] => Array
        (
            [item] => apple pie
            [distance] => 4
        )

    [2] => Array
        (
            [item] => apricot
            [distance] => 5
        )

    [3] => Array
        (
            [item] => banana
            [distance] => 6
        )

    [4] => Array
        (
            [item] => grape
            [distance] => 6
        )
)

သင်မြင်နိုင်သည့်အတိုင်း Apple သည် 0 ကိုအကွာအဝေးနှင့်အတူပထမ ဦး ဆုံးအဆင့်သတ်မှတ်ချက်ဖြစ်ပြီးရှာဖွေရေးဝေါဟာရနှင့်ဆင်တူသည့်ပစ္စည်းကပါ။

3 ။ ရှာဖွေရန် URL ကိုသုံးပါ

ရှာဖွေမှုရလဒ်များကို URL ဖြင့်ရှာဖွေရန်လိုအပ်သည်ဟုယူဆရန်လိုအပ်သည်ဟုယူဆချက်များပြုလုပ်ရန်လိုအပ်သည်။ ကျွန်ုပ်တို့သည်သက်ဆိုင်ရာ URL ကို string ထဲသို့တိုက်ရိုက်ထည့်သွင်းနိုင်သည်။ ဒီမှာဥပမာတစ်ခုပါ။

 <?php
$searchTerm = 'apple';  // အသုံးပြုသူများမှဝင်လာသောရှာဖွေရေးဝေါဟာရများ
$items = ['apple pie', 'apple', 'banana', 'grape', 'apricot'];
$baseUrl = 'http://gitbox.net/search?query=';

$results = [];

foreach ($items as $item) {
    $distance = levenshtein($searchTerm, $item);
    if ($distance <= 3) {
        $results[] = [
            'item' => $item,
            'url'  => $baseUrl . urlencode($item)  // ကိုက်ညီသည့်ပစ္စည်းကိုထည့်ပါ URL splicing လုပ်ပါ
        ];
    }
}

print_r($results);
?>

ဤဥပမာတွင်ရှာဖွေမှုရလဒ်များသည်ပွဲစဉ်တွင်ပါ 0 င်ရုံသာမကပွဲတစ်ခုစီအတွက် URL ကိုထုတ်ပေးသည်။

ရလဒ်ဥပမာ:

 Array
(
    [0] => Array
        (
            [item] => apple pie
            [url] => http://gitbox.net/search?query=apple+pie
        )

    [1] => Array
        (
            [item] => apple
            [url] => http://gitbox.net/search?query=apple
        )
)

အကျဉ်းချုပ်

Levenhhtein function ကိုနှင့်အတူကျွန်ုပ်တို့သည် fuzzy search function ကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ ၎င်းသည်ရိုးရှင်းသောပွဲတစ်ခုဖြစ်သည်ဖြစ်စေ, အမှန်တကယ်လိုအပ်ချက်များအပေါ် အခြေခံ. ကျွန်ုပ်တို့သည်ရှာဖွေမှုအတွေ့အကြုံကိုပိုမိုကောင်းမွန်စေရန်အတွက် fuzzy ကိုက်ညီမှုကို URLs များနှင့်ချိတ်ဆက်နိုင်သည်။ ဤဆောင်းပါးသည် PHP ၏ Levenhhtein function ကိုပိုမိုနားလည်ပြီးပိုမိုကောင်းမွန်စွာနားလည်ပြီးအသုံးပြုရန်နှင့်သင်၏ရှာဖွေရေးလုပ်ဆောင်ချက်၏ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်တိကျမှန်ကန်မှုကိုတိုးတက်စေနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။