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