我如何在网站上修改搜索选项,以便误入词的单词也给出一些建议



使用mysql" like"功能进行当前搜索,并希望使用Jaro-Winkler对其进行修改。实施它的最佳方法是什么。PHP代码,JS代码或MySQL函数?

要搜索的列包含约1m行!

jaro-winkler函数比较两个字符串,并根据两个字符串之间的匹配(您可以更改返回类型(返回float值。如果两个字符串等于1,则1个小于1个值。

因此,利用jaro-winkler并将错误单词与您的有效值进行比较。

您需要在某个表中存储所有有效值(用于使用类似表达式的搜索(。

SELECT t.colname AS name,MAX(jaro_winkler_similarity('$mistypeword',t.colname )) AS jvalue FROM tablename AS t;

此查询为错误的单词提供了最大可能的正确值。

正如您说的那样,您有100万行,上面的查询可能会花费大量时间来给您回复。

因此,请从查询中获取值,然后您的php找到最大可能的有效值。

$sql = "SELECT t.colname AS name,jaro_winkler_similarity('$mistypeword',t.colname ) AS jvalue FROM tablename AS t";
$resultset = mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn));
$value = 0;
while( $rows = mysqli_fetch_assoc($resultset) ) {
    $new_val = $rows['jvalue'];
    if($value < $new_val ){
        $value = $new_val;
        $search_name = $rows['name'];
    }
}

$search_name是错误的词最大可能的正确词。您可以使用此值来执行您剩余的操作。

注意:您还可以在浏览器上显示一个字符串,例如显示结果(正确的单词(而不是错误的单词。

最新更新