在我的网络应用程序中,会有几个用户。并且他们将自己的内容上传到我的webapp。对于他们上传的每个内容,它都有标题,描述和标签(关键字)。我可以编写搜索脚本来搜索内容或用户名。但是当他们给出拼写错误时它们的关键字不会返回任何结果。例如,如果数据库中有一个名为“Michael”的用户,并且搜索查询是“Micheal”,那么我应该得到“你是不是要搜索'迈克尔'”,这不过是一个搜索建议。
此建议也应该针对用户上传的内容。用户可以将其内容的标题保持为“迈克尔2011年5月的活动”,并且应为单个单词生成建议。
答案 0 :(得分:8)
您可以使用SOUNDEX搜索类似声音的名称,例如:
SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input)
或者像那样
SELECT * FROM users WHERE name SOUNDS_LIKE :input
(完全相同)
编辑:如果您需要使用除Soundex之外的算法,正如Martin Hohenberg建议的那样,您需要在表中添加一个额外的列,例如,sound_equivalent。 (这实际上是一种更有效的解决方案,因为可以索引此列)。请求将是:
SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent
然后可以使用PHP算法生成sound_equivalent列的内容,并将其与其余用户参数一起插入表中。
答案 1 :(得分:2)
如果没有搜索结果,您还可以使用php库pspell获取建议。
答案 2 :(得分:0)
也许创建一个最常见的单词数据库(如:狗,房子,城市,数字,水,互联网)。不需要做大(<10000字)。 然后,当您分解搜索词时,请检查“word”数据库中的单词LIKE搜索词。然后回应一下这些建议。