MySql FULLTEXT搜索相关性调整

时间:2014-07-08 10:58:31

标签: mysql search full-text-search match relevance

通过此处的其他帖子,我无法找到我的具体要求。

这是我的例子

我在数据库中有一些产品,标题如下。 如果用户搜索"蘑菇派"

,这就是我希望他们出现的顺序

1.mushroom馅饼 2.Mushroom Pie 3.Pie Mushroom 4.Mushroom汤 5.Pork Pie 6.Mushroom&野生蘑菇汤

我已将全文添加到"标题"我的产品数据库中的字段......但不幸的是,它没有按照我的意愿行事。

SELECT products.title ,products.normalisedCode
FROM products
WHERE MATCH (title) AGAINST ('+mushroom +pie' )

这使得"蘑菇&野生蘑菇汤"在我的结果的顶部...我想这是因为"蘑菇"在标题中出现两次。

当我加入另一个"喜欢"声明

SET CHARACTER SET utf8;
SELECT products.title ,products.normalisedCode
FROM products
WHERE MATCH (title) AGAINST ('+mushroom +pie' ) 
OR products.normalisedCode LIKE CONCAT('%', normaliseNumString('mushroom'), '%') 

这完全搞砸了排序......我尝试过使用布尔匹配模式......但这只会带回标题中含有两个关键词的产品......我需要它带回任何带有任何一个字的产品在标题中,但在结果的顶部以正确的顺序放置两个单词。

希望这是有道理的。

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT (MATCH(title) AGAINST ('mushroom Pie')) as Relevance,
products.title ,products.normalisedCode

FROM products 
WHERE MATCH (title) AGAINST ('+mushroom +Pie' )

ORDER BY Relevance DESC
相关问题