通过此处的其他帖子,我无法找到我的具体要求。
这是我的例子
我在数据库中有一些产品,标题如下。 如果用户搜索"蘑菇派"
,这就是我希望他们出现的顺序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'), '%')
这完全搞砸了排序......我尝试过使用布尔匹配模式......但这只会带回标题中含有两个关键词的产品......我需要它带回任何带有任何一个字的产品在标题中,但在结果的顶部以正确的顺序放置两个单词。
希望这是有道理的。
谢谢!
答案 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