看了这里的其他帖子,我还没能找到我的具体要求。
这是我的例子
我在数据库中有一些产品,标题如下。这是我希望在用户搜索"蘑菇派"时它们出现的顺序
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