PHP-Levenshtein距离
当用户搜索不正确的单词时,我想显示您的意思是可选项吗。这段代码可以工作,但有些结果是不相关的。示例:我的表中有一条苹果记录。如果用户搜索apple1结果是:您是指apple吗?,但如果用户搜索aple结果是:您是指Dole?有没有办法显示更相关的结果?下面是一个代码:PHP-Levenshtein距离,php,levenshtein-distance,Php,Levenshtein Distance,当用户搜索不正确的单词时,我想显示您的意思是可选项吗。这段代码可以工作,但有些结果是不相关的。示例:我的表中有一条苹果记录。如果用户搜索apple1结果是:您是指apple吗?,但如果用户搜索aple结果是:您是指Dole?有没有办法显示更相关的结果?下面是一个代码: $search = $_GET ['search']; $results = array(); foreach ($db->query("SELECT id FROM table") as $name) { $result
$search = $_GET ['search'];
$results = array();
foreach ($db->query("SELECT id FROM table") as $name) {
$results[] = $name['id'];
}
$shortest = -1;
foreach ($results as $word) {
$lev = levenshtein($search, $word);
if ($lev <= $shortest || $shortest < 0) {
$closest = $word;
$shortest = $lev;
}
}
echo $closest;
$search=$\u GET['search'];
$results=array();
foreach($db->query(“从表中选择id”)作为$name){
$results[]=$name['id'];
}
$shortest=-1;
foreach($word形式的结果){
$lev=levenshtein($search,$word);
如果($lev您可能想改用。另一方面,apple和apple之间的levenshtein距离是Dole和aple之间的1和2,所以我不知道为什么您的代码会给出这样的结果。我刚刚运行了您的代码,我得到了apple。可能您的$result
数组或$search
字符串中有错误?请注意如果有多个结果的Levenshtein距离最小,那么您的代码将返回最后一个匹配结果。因此,如果您的结果中有apple和稍后的某个地方的maple(对于$search=“aple”;,两者的Levenshtein距离均为1),返回的将是maple。感谢您的回复。我考虑的是结果Dole。我只有这些行,没有其他内容。这些行上面是连接详细信息和搜索表单。您可能想使用它们。另一方面,apple和apple之间的levenshtein距离是Dole和aple之间的1和2,所以我不确定为什么您的代码会出现错误我刚刚运行了你的代码,我得到了苹果。也许你的$result
数组或$search
字符串有问题?请注意,如果有多个具有最低Levenshtein距离的结果,你的代码将返回最后一个匹配。因此,如果你的结果中有苹果和后来的maple,那么ts(对于$search=“aple”;,两者的Levenshtein距离均为1),返回的是maple。感谢您的回复。我考虑的是result Dole。我只有这些行,没有其他行。这些行上面是连接详细信息和搜索表单。