我正在尝试在 MySQL 数据库中进行搜索,以获取包含与搜索值最相似的值的行。
即使最接近的结果有很大不同,我仍然想返回它(稍后我会进行字符串比较并将“未知”添加到学习池中)
我想通过“msg1”列搜索我的表“响应”并获得一个结果,即编辑分数最低的结果,就像整个列中最相似的结果一样。
这类事情:
SELECT * FROM people WHERE levenshtein('$message', 'msg1') ORDER BY ??? LIMIT 1
我不太理解这里的levenshtein的概念,正如你所看到的,我正在搜索整个表格,并按???排序。 (函数的分数?)然后将其限制为一个结果。
然后我想将 $reply 设置为我得到的这一单行“reply”列中的值。
非常感谢您的帮助,我找不到很多我正在寻找的示例。我可能这样做完全错误,我不确定。
谢谢!
最佳答案
你会这样做:
SELECT p.*
FROM people p
ORDER BY levenshtein('$message', msg1) ASC
LIMIT 1;
如果您想要一个阈值(以限制排序的行数,请使用 WHERE
子句。否则,您只需要 ORDER BY
。
关于php - 在 MySQL 中使用 levenshtein 搜索一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953922/