MySQL全文MATCH AGAINST不适用于复数形式

时间:2016-03-17 12:21:52

标签: mysql full-text-search

我试图在mySQL中进行简单的全文搜索,但是我遇到了复数问题。

我相信我正在达到 50%规则

我不相信我正在使用停用词

我正在运行这样的查询:

SELECT * FROM product_detail WHERE MATCH(product_detail.title, product_detail.content) AGAINST('rake' IN BOOLEAN MODE)
  • 22结果

然后我跑:

SELECT * FROM product_detail WHERE MATCH(product_detail.title, product_detail.content) AGAINST('rakes' IN BOOLEAN MODE)
  • 0结果

搜索耙子'或者' rake'返回所有22个结果,但是' rakes',' raker'' raked'返回零。我只是在phpMyAdmin中运行这些查询,因此没有其他任何干扰。

我在俯瞰什么?

1 个答案:

答案 0 :(得分:0)

BOOLEAN搜索不使用50%规则。

如果“rake”存储在你的FULLTEXT列中,那么带有“rake”,“rake”和“rake”的FULLTEXT搜索都将返回该行,因为搜索值都包含单词“rake”。使用自然语言(不是BOOLEAN)搜索,当搜索“rake”时,包含“the”和“rake”的条目将具有比仅具有“rake”的行更高的相关性值。

然而,“耙子”,“耙子”和“耙子”中没有“耙子”这个词。 FULLTEXT搜索是单词搜索,“rakes”与“rake”不匹配。

您可以在BOOLEAN搜索中使用通配符。搜索“rake *”会返回“rake”,“rakes”和“raked”等行,但你不能搜索“rakes”或“raked”并获得“rake”。