如何增加mysql全文准确性?
作者:互联网
我正在运行一个简单的mysql全文查询,该查询根据其“显示名称”在我的网站上搜索用户.查询示例如下-在此示例中,我们正在搜索“兰开斯特玩具店”:
SELECT MATCH(`display_name`) AGAINST ('lancaster toy store') as `rel`
WHERE MATCH(`display_name`) AGAINST ('lancaster toy store')
ORDER BY `rel` DESC
它的效果很好,因为它可以得出很多结果,但是结果的一个示例是:
>夏洛特玩具店
>百老汇玩具店
>亚利桑那州的玩具店
>兰开斯特的玩具店
>东海岸玩具
如您所见,我的问题是人们正在寻找“兰开斯特玩具店”,显然最好的结果是出现在中间或底部附近.
我也使用了porter-stemmer技术.
任何想法如何获得更准确的结果?
更新
这是真实的查询(实际搜索条件是“ lancaster restore”):
SELECT `id`,
MATCH (`display_name`) AGAINST ('lancast* restor*' IN BOOLEAN MODE)
AS `RELEVANCY`
FROM `users`
WHERE `status` = 'active'
&& MATCH (`display_name`) AGAINST ('lancast* restor*' IN BOOLEAN MODE)
ORDER BY `RELEVANCY` DESC
LIMIT 25
结果如下:
>橙县人居环境-重新存储
>重新存储新罕布什尔州第四街15号
>莫里斯人居中心
>人居中心利马俄亥俄州
>人居夏洛特恢复
>恢复蒙哥马利县
>代顿俄亥俄州人性化栖息地
>恢复
>兰开斯特地区人性化栖息地
解决方法:
嗯,词干对获取结果可能很有用,但是由于并非所有参数都是必需的(前面没有),因此最好搜索:
MATCH (display_name)
AGAINST ('lancast* restor* >lancaster >restore' IN BOOLEAN MODE)
或至少
ORDER BY MATCH (display_name)
AGAINST ('lancast* restor* >lancaster >restore' IN BOOLEAN MODE) DESC
标签:search,full-text-search,mysql 来源: https://codeday.me/bug/20191105/1997199.html