理解全文布尔模式结果

时间:2013-06-10 10:32:42

标签: mysql full-text-search booleanquery

我一直在玩boolean mode与MySQL的fulltext搜索,但我不理解我有时会得到的结果。

例如,这里有一些数据行..

auction_id,'name'
100543,'2011-12 Fleer Retro patch auto'
100544,'2011-12 Fleer Retro patch auto jordan'
100545,'2011-12 Fleer Retro autograph'
100546,'2011-12 Fleer Retro autographed'
100547,'2011-12 Fleer Retro auto'
100549,'1999 jordan auto'
100550,'1999 auto jordan'
100551,'1999 autograph jordan'
100552,'1999 autographed jordan patch'
100553,'1999 jordan non auto'

现在,如果我运行查询:

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

我得到了返回的行100544,100549,100550,100553,这是正确的。但是,如果我运行此查询:

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

我得到了相同的结果;不应该100553离开,因为它有"非"在name

此外,如果我将其更改为:

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

我没有得到任何结果;除了100553之外,我应该把它们全部拿到吗?

1 个答案:

答案 0 :(得分:1)

正如Boolean Full-Text Searches所述:

  

布尔全文搜索具有以下特征:

[ deletia ]
     

正如ft_max_word_len所述:

  

全文搜索中会忽略某些字词:

     
      
  • 任何太短的单词都会被忽略。通过全文搜索找到的默认最小单词长度是InnoDB个搜索索引的三个字符,或MyISAM的四个字符。您可以在创建索引之前设置配置选项来控制截止:InnoDB搜索索引的Natural Language Full-Text Searches配置选项或MyISAM的{​​{3}}。
  •