全文搜索不使用关键字“one”

时间:2014-01-02 10:47:11

标签: mysql

我在全文搜索中面临一个奇怪的问题。

我的查询是。

SELECT  `itemid`, `title`,  `image`, 
  MATCH( `itemid`, `title`, `product_id`,`p1_name`, `p2_name`) 
  AGAINST ("+samsung +one" IN BOOLEAN MODE ) AS score 
FROM `tablename` 
WHERE `active_flag`='1' AND `image`!='' 
  AND `new_price`>'0' AND 
  MATCH( `itemid`, `title`, `product_id`,`p1_name`, `p2_name`) AGAINST ( "+samsung +one" IN BOOLEAN MODE ) !=0 
  ORDER BY score DESC;

这给了我与全文索引字段中的单词“one”不匹配的数据。 即使我包含任何单词或所有这些单词,如“一二三四”作为搜索参数,它给了我结果。

2 个答案:

答案 0 :(得分:1)

Mysql全文索引实现了“停用词” - 为搜索目的而忽略的常用词,例如“a”,“the”等,甚至还有一些很长的词,如“对应”。

默认的停用词列表包含单词“one”,这就是为什么它没有得到任何匹配。有关完整列表,请参阅this link

您可以通过编辑此文件来控制列表:

myisam/ft_static.c

答案 1 :(得分:0)

默认情况下,全文搜索仅匹配四个或更多字符的单词。

要匹配较短的字词,您需要change the appropriate parametersinnodb_ft_min_token_sizeft_min_word_len,具体取决于您使用的数据库引擎)并重建索引。