php - PHP MySQL搜索建议

原文 标签 php mysql search search-suggestion

在我的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 - 无法发送消息到APN?

php - 如何防止PHP中进行SQL注入?

php - 从PHP执行时,Wkhtmltopdf无法解析主机

mysql - 如何更新MySQL表中的值如果其他值是重复的?

php - mysql_query仅返回int / fload db类型的字符串类型

python - Python:如果list包含字符串,则打印包含它的列表中的所有索引/元素

javascript - 带MySQL和PHP的chartJs

mysql - 自定义操作无法安装MySQL

java - Java-如何依次查找可能未填充的数组中元素的最后出现?

php - SQL按公式加权行