elasticsearch 我如何在我的网站上修改搜索选项,以便输入错误的单词也能给出一些建议,elasticsearch,search,elasticsearch,Search" /> elasticsearch 我如何在我的网站上修改搜索选项,以便输入错误的单词也能给出一些建议,elasticsearch,search,elasticsearch,Search" />

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

elasticsearch 我如何在我的网站上修改搜索选项,以便输入错误的单词也能给出一些建议,elasticsearch,search,elasticsearch,Search,使用mysql“like”函数进行当前搜索,并希望使用jaro winkler对其进行修改。 实现它的最佳方法是什么。 php代码、js代码还是mysql函数 要搜索的列包含大约1M行 jaro winkler函数比较两个字符串并根据两个字符串之间的匹配情况返回浮点值(您可以更改返回类型)。如果两个字符串都相等,则1小于1 因此,请利用jaro winkler并将键入错误的word与有效值进行比较 您需要将所有有效值(用于使用like表达式进行搜索)存储在某个表中 SELECT t.colnam

使用mysql“like”函数进行当前搜索,并希望使用jaro winkler对其进行修改。 实现它的最佳方法是什么。 php代码、js代码还是mysql函数


要搜索的列包含大约1M行

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

因此,请利用jaro winkler并将键入错误的word与有效值进行比较

您需要将所有有效值(用于使用like表达式进行搜索)存储在某个表中

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'];
    }
}
$sql=“选择t.colname作为名称,选择jaro_winkler_相似性('$mistypeword',t.colname)作为表名中的jvalue作为t”;
$resultset=mysqli_query($conn,$sql)或die(“数据库错误:”.mysqli_error($conn));
$value=0;
while($rows=mysqli\u fetch\u assoc($resultset)){
$new_val=$rows['jvalue'];
如果($value<$new\u val){
$value=$new\u val;
$search_name=$rows['name'];
}
}
$search\u name
是输入错误单词的最大可能正确单词。您可以使用此值执行其余操作


注意:您也可以在浏览器上显示字符串,就像显示结果一样(正确的单词),而不是键入错误的单词。

如果使用elasticsearch,请使用模糊查询