我试图在mySQL中进行简单的全文搜索,但是我遇到了复数问题。
我相信我正在达到 50%规则。
我不相信我正在使用停用词。
我正在运行这样的查询:
SELECT * FROM product_detail WHERE MATCH(product_detail.title, product_detail.content) AGAINST('rake' IN BOOLEAN MODE)
然后我跑:
SELECT * FROM product_detail WHERE MATCH(product_detail.title, product_detail.content) AGAINST('rakes' IN BOOLEAN MODE)
搜索耙子'或者' rake'返回所有22个结果,但是' rakes',' raker'' raked'返回零。我只是在phpMyAdmin中运行这些查询,因此没有其他任何干扰。
我在俯瞰什么?
答案 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”。