စာသားနှင့်ကိုက်ညီမှုနှင့်ရှာဖွေခြင်းကိုပြုလုပ်သောအခါကျွန်ုပ်တို့သည်တူညီသောပွဲများကိုအတိအကျမလိုအပ်ပါ။ PHP သည်ဤရည်မှန်းချက်အောင်မြင်ရန်နှင့် fuzzy ရှာဖွေမှုများကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည့်အလွန်အဆင်ပြေသော functionttein ကိုထောက်ပံ့ပေးသည်။ ယနေ့ကျွန်ုပ်တို့သည် Fuzzy Search ကိုရှာဖွေရန်နှင့် PHP မှတစ်ဆင့်အနီးစပ်ဆုံးကိုက်ညီမှုကိုရရှိရန် Levenshiptein function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးမည်။
Levenhtein အကွာအဝေး (Edit Fase ဟုလည်းခေါ်) သည်ကြိုးနှစ်ချောင်းအကြားခြားနားချက်ကိုညွှန်ပြချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် string တစ်ခုသို့အနည်းဆုံးတည်းဖြတ်ခြင်းလုပ်ငန်းများ (အစားထိုး, အစားထိုးခြင်း, အစားထိုးခြင်း) နှင့်အခြားတစ်ခုသို့ပြောင်းရန်လိုအပ်သောအဆင့်များအရေအတွက်ကိုကိုယ်စားပြုသည်။ အကွာအဝေးသေးငယ်သည်, ကြိုးနှစ်ချောင်းသည် ပို. ဆင်တူသည်။
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 အကွာအဝေးကိုတွက်ချက်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကြိုးနှစ်ချောင်းအကြားဆင်တူမှုကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ အကွာအဝေးသေးငယ်သည်, ပိုမိုဆင်တူသည်။
လက်တွေ့ကျသောအပလီကေးရှင်းများ၌ကျွန်ုပ်တို့သည်သော့ချက်စာလုံးကိုရှာဖွေသောအခါ "fuzzy search" function ကိုပေးသည်။ ဆိုလိုသည်မှာကျွန်ုပ်တို့သည်အချိန်အတိအကျမျှသာမဟုတ်ဘဲအသုံးပြုသူမှထည့်သွင်းထားသောရှာဖွေရေးဝေါဟာရများနှင့်ဆင်တူသည့်အကြောင်းအရာများကိုရှာဖွေလိုကြသည်။
ငါတို့မှာကြိုးပေါင်းများစွာအများကြီးရှိပါတယ်။ အခုဆိုရင်အသုံးပြုသူမှထည့်သွင်းထားသောသော့ချက်စာလုံးများကို အခြေခံ. ထိုအလားတူကြိုးများကိုရှာဖွေရန်လိုအပ်သည်ဆိုပါစို့။ 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
)
တခါတရံတွင်ကျွန်ုပ်တို့သည်တူညီမှုအားလုံးကိုရှာဖွေရန်သာလိုပေမည်, တွက်ချက်ထားသော 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 ကိုအကွာအဝေးနှင့်အတူပထမ ဦး ဆုံးအဆင့်သတ်မှတ်ချက်ဖြစ်ပြီးရှာဖွေရေးဝေါဟာရနှင့်ဆင်တူသည့်ပစ္စည်းကပါ။
ရှာဖွေမှုရလဒ်များကို 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 ကိုပိုမိုနားလည်ပြီးပိုမိုကောင်းမွန်စွာနားလည်ပြီးအသုံးပြုရန်နှင့်သင်၏ရှာဖွေရေးလုပ်ဆောင်ချက်၏ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်တိကျမှန်ကန်မှုကိုတိုးတက်စေနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။