数据库
首页 > 数据库> > 如何增加mysql全文准确性?

如何增加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