对于stop-word的全文布尔搜索返回null结果

时间:2013-02-23 02:28:35

标签: php mysql full-text-search

我搜索了大量关于全文搜索的问题,我找不到解决这个问题的方法。

我的命令如下:

SELECT * FROM t1 WHERE MATCH (c1,c2,c3) AGAINST (:keyStr IN BOOLEAN MODE)

如果:keyStr =='+ apple *'我会返回值。

如果:keyStr =='+ this *'我没有得到任何回复。

if:keyStr =='+ apple * + this *'我什么都没有回来。

如果:keyStr =='+ apple * + chicken *'我会返回值。

'this','apple'和'chicken'都在db中,所有三个查询都应返回非null结果。

我认为当输入一个停用词时,数据库会自动返回任何内容。

2 个答案:

答案 0 :(得分:1)

我认为问题在于'这个'是一个禁用词,并且在'this'周围包含了+和*。

原因是:keyStr == '+apple* +this*'需要apple *和this *。但是因为唯一匹配'this *'的是禁用词,所以你看不到结果。

您可以尝试:keyStr == '+apple* this*'或使用'thisorthat

插入记录

答案 1 :(得分:0)

不太可能。 Boolean Full-Text Search Documentation明确指出它不会被视为禁用词:

  

如果使用截断运算符指定了单词,则不会从布尔查询中删除它,即使它太短(根据ft_min_word_len设置确定)或停用词。之所以会出现这种情况,是因为该单词不会被视为太短或停用词,而是作为前缀必须以单词形式出现在文档中,该单词以前缀开头。