Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-Levenshtein距离_Php_Levenshtein Distance - Fatal编程技术网

PHP-Levenshtein距离

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

当用户搜索不正确的单词时,我想显示您的意思是可选项吗。这段代码可以工作,但有些结果是不相关的。示例:我的表中有一条苹果记录。如果用户搜索apple1结果是:您是指apple吗?,但如果用户搜索aple结果是:您是指Dole?有没有办法显示更相关的结果?下面是一个代码:

$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。我只有这些行,没有其他行。这些行上面是连接详细信息和搜索表单。