我有下面的查询和相关的排名似乎是关闭的。
资讯科技
iPhone 5C Used Verizon 8GB 58165 White 高于
iPhone 8 Front Camera Flex它似乎要做的是在搜索阶段对单词的数量进行排序。如果单词是相邻的,我想给出更高的相关性(如上面所示)。
SELECT phppos_items.name, MATCH (phppos_items.name) AGAINST ('iphone 8*' IN BOOLEAN MODE) as rel
FROM phppos_items
WHERE MATCH (phppos_items.name) AGAINST ('iphone 8*' IN BOOLEAN MODE)
ORDER BY `rel` DESC;结果(太大而无法粘贴)
https://gist.github.com/blasto333/d8f8fe470cc1cfb1f959922ea77f8134
发布于 2019-02-16 20:52:59
让我们先分析一下您使用的条件,并根据以下情况进行排序:
MATCH (phppos_items.name) AGAINST ('iphone 8*' IN BOOLEAN MODE)根据Mysql布尔全文搜索,您正在匹配任何包含的文本-任何单词的:
这意味着任何有iphone 或 8的文本都是匹配的。
您想要的是将"iphone 8“匹配为一个字符串,其优先级高于"iphone”或"8*“。
为实现这一目标:
将sql查询更改为:
AGAINST ('>"iphone 8*" >iphone <8*' IN BOOLEAN MODE)在select语句
这意味着它给予的优先权是精确iphone 8*和iphone,而不是8*。
https://stackoverflow.com/questions/54711658
复制相似问题