我在我的网站上搜索过,并且我试图在我的网站上显示最受欢迎的搜索字词列表,但这种搜索字符很有效,但它并不足够匹配。
这就是我目前正在使用的内容:
$sql = "SELECT * FROM db WHERE r_name LIKE '%".$searchname."%' OR r_number like '%".$searchname."%'
但是,如果用户搜索说Game Name
而另一个搜索Game Name (Reviews)
,则会在我的数据库中添加2个条目,是否有办法在输入条目之前进行相似性测试?
答案 0 :(得分:0)
SELECT * FROM db WHERE SOUNDEX( db.r_name ) LIKE SOUNDEX( '{$searchname}' );
我相信如果你有一个条目'lowercasexd',并且soundex like('what is lowercasexd?'),它会找到与'lowercasexd'相关联的条目。 请注意,与索引数据库上的'='搜索相比,这种类型的搜索需要一段时间才能运行(在我的数据库上,它每秒执行大约5-6k个条目),因此不推荐用于任何大的搜索。如果您想要一个近乎完美的解决方案,我建议您阅读谷歌的搜索机制,如果您的项目足够重要,请查看一些搜索引擎源代码。