匹配没有结果

时间:2018-05-05 00:18:03

标签: mysql database

我在MySQL表中遇到全文搜索问题。

MATCH AGAINST即使我有7条包含我正在寻找的单词的记录,也不会返回任何结果。我该怎么做才能让它返回行?

SELECT * 
FROM site_plugin_products_cache_texts 
WHERE MATCH(item_text) AGAINST ('+your +name' IN BOOLEAN MODE);
  

没有行。

SELECT * 
FROM site_plugin_products_cache_texts 
WHERE item_text LIKE'%your name%'
  

7行(0.071秒)

http://sqlfiddle.com/#!9/70c3fa/1/0

感谢。

1 个答案:

答案 0 :(得分:4)

这两个词都包含在Stopwords for MyISAM Search Indexes中,这实际上是在全文索引中完全忽略的单词列表(通常它们往往过于频繁)。

最简单的解决方案是切换到InnoDB作为您的引擎,因为它有一个更短的停用词列表。如果您需要使用MyISAM,则必须执行以下操作:

  

要覆盖MyISAM表的默认禁用词列表,请设置ft_stopword_file系统变量。 (请参见第5.1.7节“服务器系统变量”。)变量值应该是包含禁用词列表的文件的路径名,或者是用于禁用禁用词过滤的空字符串。除非给出绝对路径名以指定其他目录,否则服务器将在数据目录中查找该文件。更改此变量的值或停用词文件的内容后,重新启动服务器并重建FULLTEXT索引。