PHP / SQL检查数据库中是否已存在类似条目

时间:2014-05-29 18:37:05

标签: php mysql

我在我的网站上搜索过,并且我试图在我的网站上显示最受欢迎的搜索字词列表,但这种搜索字符很有效,但它并不足够匹配。

这就是我目前正在使用的内容:

$sql = "SELECT * FROM db WHERE r_name LIKE '%".$searchname."%' OR r_number like '%".$searchname."%'

但是,如果用户搜索说Game Name而另一个搜索Game Name (Reviews),则会在我的数据库中添加2个条目,是否有办法在输入条目之前进行相似性测试?

1 个答案:

答案 0 :(得分:0)

是的,有一种方法,但它需要你稍微摆弄它。有一个叫做的搜索 SOUNDEX,它将匹配非常接近的东西。它可能不是您问题的完美解决方案,但它肯定会让您开始朝着正确的方向前进。

SELECT * FROM db WHERE SOUNDEX( db.r_name ) LIKE SOUNDEX( '{$searchname}' );

我相信如果你有一个条目'lowercasexd',并且soundex like('what is lowercasexd?'),它会找到与'lowercasexd'相关联的条目。 请注意,与索引数据库上的'='搜索相比,这种类型的搜索需要一段时间才能运行(在我的数据库上,它每秒执行大约5-6k个条目),因此不推荐用于任何大的搜索。如果您想要一个近乎完美的解决方案,我建议您阅读谷歌的搜索机制,如果您的项目足够重要,请查看一些搜索引擎源代码。

相关问题