gpt4 book ai didi

Mysql全文搜索 bool 模式按相关性排序而不是我正在寻找的顺序(短语匹配)

转载 作者:行者123 更新时间:2023-11-29 07:24:17 25 4
gpt4 key购买 nike

我有以下查询,相关性排名似乎不对。

排名

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

最佳答案

让我们首先分析您使用的条件并按以下方式排序:

MATCH (phppos_items.name) AGAINST ('iphone 8*' IN BOOLEAN MODE)

根据 Mysql Boolean Full-Text Searches ,您正在匹配包含以下单词的任何的任何文本:

  • 苹果手机
  • 8

表示匹配任何具有 iphone OR 8 的文本。

您想要的是将“iphone 8”作为优先级高于“iphone”或“8*”的字符串进行匹配。

要实现这一点:

  • 将“iphone 8*”添加为要匹配的字符串
  • 使用> <运算符
  • 并赋予其优先级,高于“iphone”和“8*”

将 sql 查询更改为:

AGAINST ('>"iphone 8*" >iphone <8*' IN BOOLEAN MODE)

在选择语句中

意味着它给予 确切的 iphone 8* 和 iphone 高于 8* 的优先权。

关于Mysql全文搜索 bool 模式按相关性排序而不是我正在寻找的顺序(短语匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com