在我的web应用程序中,将有几个用户。他们会把自己的内容上传到我的网络应用上。他们上传的每个内容都有标题、描述和标签(关键字)。我可以编写一个搜索脚本来搜索内容或用户名。但是当他们给出一个拼写错误的关键字时,它不会返回任何结果。例如,如果在数据库中有一个名为"Michael“的用户,而搜索查询是”Michael“,我应该得到”您的意思是要搜索‘Michael’吗?“,这只是一个搜索建议。
此外,这个建议应该是由用户上传的内容。用户可以将其内容的标题保留为“Michael的活动2011年5月”,并且应该为单个单词生成建议。
发布于 2011-08-27 19:28:47
您可以使用SOUNDEX搜索听起来相似的名称,如下所示:
SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input)
或者像这样
SELECT * FROM users WHERE name SOUNDS_LIKE :input
(这是完全等效的)
编辑:如果需要像Martin Hohenberg建议的那样使用Soundex以外的算法,则需要向表中添加额外的列,例如,名为sound_equivalent。(这实际上是一个更有效的解决方案,因为可以对该列进行索引)。然后,请求将是:
SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent
然后,可以使用sound_equivalent算法生成PHP列的内容,并将其与其他用户参数一起插入到表中。
发布于 2011-08-27 19:31:35
如果你没有搜索结果,你也可以使用php库pspell来获取建议。
发布于 2011-08-27 19:23:07
也许可以创建一个最常用单词的数据库(比如:狗,房子,城市,数字,水,互联网)。不需要把它做得很大(<10000字)。然后,当你分解搜索词时,在"word“数据库中查找像搜索词这样的词。然后,只需呼应建议。
https://stackoverflow.com/questions/7214163
复制相似问题