php - PHP MySQL搜索建议

在我的web应用程序中将有几个用户。他们有自己的内容上传到我的网络应用。他们上传的每一个内容都有一个标题、描述和标签(关键字)。我可以编写一个搜索脚本来搜索内容或用户名。但是当他们给出一个拼写错误的关键字时,它不会返回任何结果。例如,如果数据库中有一个名为“michael”的用户,而搜索查询是“micheal”,那么我应该得到“Do you mean to search for‘michael’”,这只是一个搜索建议。
这个建议也应该是针对用户上传的内容。用户可以将其内容的标题保留为“Michael's Activities May 2011”,并为单个单词生成建议。


最佳答案:

你可以用soundex搜索类似的名字,比如:

SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input)

或者像那样
SELECT * FROM users WHERE name SOUNDS_LIKE :input

(完全等同)
编辑:如martin hohenberg所建议,如果需要使用soundex以外的算法,则需要在表中添加一个额外的列,例如sound_等效列。(这实际上是一个更有效的解决方案,因为此列可以被索引)。然后,请求将是:
SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent

然后,可以使用php算法生成sound_等价列的内容,并将其与其他用户参数一起插入表中。

译文:来源   文章分类: php mysql search search-suggestion

相关文章:

php - Doctrine 2实体:它们应该包含逻辑吗?

php - 如何根据ID选择类别名称

php - 从字符串php中删除文本

php - 不使用SQL的Magento安装脚本中的ALTER TABLE

php - Symfony3:集中式异常处理

php - 在单个表中显示MySQL结果

php - mockery-> shouldReceive()传递的时候不应该?

php - 扩展PDO准备方法以替换查询前缀

php - PHP SoapClient构造函数非常慢

php - 为什么我无法获得HTML表单将值传递给PHP?