我在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
感谢。
答案 0 :(得分:4)
这两个词都包含在Stopwords for MyISAM Search Indexes中,这实际上是在全文索引中完全忽略的单词列表(通常它们往往过于频繁)。
最简单的解决方案是切换到InnoDB作为您的引擎,因为它有一个更短的停用词列表。如果您需要使用MyISAM,则必须执行以下操作:
要覆盖MyISAM表的默认禁用词列表,请设置ft_stopword_file系统变量。 (请参见第5.1.7节“服务器系统变量”。)变量值应该是包含禁用词列表的文件的路径名,或者是用于禁用禁用词过滤的空字符串。除非给出绝对路径名以指定其他目录,否则服务器将在数据目录中查找该文件。更改此变量的值或停用词文件的内容后,重新启动服务器并重建FULLTEXT索引。