MySql FULLTEXT搜索相关性调整



看了这里的其他帖子,我还没能找到我的具体要求。

这是我的例子

我在数据库中有一些产品,标题如下。这是我希望在用户搜索"蘑菇派"时它们出现的顺序

1。蘑菇馅饼2.蘑菇馅饼3.派蘑菇4.蘑菇汤5.猪肉馅饼6.蘑菇,野蘑菇汤

我已经在我的产品数据库中的"title"字段中添加了全文…但不幸的是,它没有做我想要的。

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

这把"蘑菇&"野蘑菇汤"在我的搜索结果中名列前茅……我想这是因为"蘑菇"在标题中出现了两次。

当我添加另一个"like"语句时

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

这完全打乱了排序…我试过使用布尔匹配模式…但这只会带来标题中包含这两个关键词的产品……我需要它来检索任何在标题中包含两个词的产品,并将包含两个词的产品以正确的顺序放在结果的顶部。

希望这有意义。

谢谢!

试试这个:

SELECT (MATCH(title) AGAINST ('mushroom Pie')) as Relevance,
products.title ,products.normalisedCode
FROM products 
WHERE MATCH (title) AGAINST ('+mushroom +Pie' )
ORDER BY Relevance DESC

相关内容

  • 没有找到相关文章

最新更新