php - 在 MySQL 中使用 levenshtein 搜索一个结果

标签 php mysql sql

我正在尝试在 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/

相关文章:

php - try/catch 在 PHP 中不起作用

c# - ASP.NET 模块可以上传到 PHP 域吗?

php - 从自己的服务器运行 URL

sql - 针对外键值的约束检查

php - 在 php 文件中动态插入 css

php - 输出 2 列/2 行表 - PHP/MySQL - For 循环

mysql添加外键错误1215

mysql - 我的主题-mysql-查询计数器不起作用

SQL 日期时间天数差异

mysql - 没有公共(public)键的 SQL 连接查询