gpt4 book ai didi

mysql - 在全文 bool 模式下对多个单词使用减号

转载 作者:可可西里 更新时间:2023-11-01 07:09:47 25 4
gpt4 key购买 nike

我只是用 mysql 的 full text boolean mode 做了一堆测试,从我的测试来看,你似乎不能在多个单词上使用减号?

例如我有两行..

id,name
1,2011-12 Fleer Retro auto jordan non
2,1999 jordan non auto

如果我运行以下查询:

SELECT auction_id,`name`,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -non' IN BOOLEAN MODE);

两行都没有按预期显示。但是,如果我运行此查询:

SELECT auction_id,`name`,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -"non auto"' IN BOOLEAN MODE);

两行都不显示(相同的结果)。行 1 不应该回来吗?

编辑:我的 ft_min_word_len 设置为 2 并且我禁用了我的停用词文件,所以它与此无关。

fiddle :http://sqlfiddle.com/#!2/d1987/4

但是,fiddle 似乎使用了默认的停用词文件,因此用“非”词对其进行测试是行不通的。

最佳答案

我不想这么说,但你必须使用 LIKE。下面我包含了一个查询,它将按照您希望的方式工作

SELECT auction_id,`name` FROM auctions WHERE MATCH(`name`) AGAINST('+jordan' IN BOOLEAN
MODE) AND `name` NOT LIKE('%non auto%') ;

使用全文模式的问题是,根据 MySQL 的 docs :

短语搜索只需要匹配包含与短语完全相同的单词且顺序相同。例如,“test phrase”匹配 MySQL 5.0.3 中的“test, phrase”,但之前不匹配。

这就是您遇到麻烦的原因。希望这可以帮助。编辑:至于为什么它的行为完全如此(不包括包含 auto 和 non 的东西,不管它们彼此相对的位置)我不知道,但似乎没有太多方法可以覆盖这种默认行为.

关于mysql - 在全文 bool 模式下对多个单词使用减号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17023972/

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