在搜索MyISAM表时,自然语言模式下的MySQL全文搜索会忽略出现在至少50%行中的单词。有什么方法可以防止这种行为吗?我想包括流行的词汇,而不是忽略它们。
例如,我有一个服装条目的MySQL表,其中90%被归类为T恤。我希望客户能够搜索" T恤"没有" T恤"在全文索引中忽略了单词。
到目前为止我唯一提出的解决方案是使用布尔模式搜索而不是自然语言搜索。但是,布尔模式搜索返回的分数似乎与自然语言搜索返回的分数一样多样或有意义。
附注:从MySQL 5.6及更高版本开始,InnoDB表上的自然语言搜索不会忽略出现在至少50%行中的单词。但是,在我的网络服务器上,我仍在使用MySQL 5.5,它不能在InnoDB表上提供全文搜索,因此该表需要保持MyISAM格式。
谢谢!
答案 0 :(得分:0)
几年后,我在MySQL 5.7的文档中找到了答案:
对于MyISAM搜索索引,自然语言搜索的50%阈值由所选的特定加权方案确定。要禁用它,请在storage / myisam / ftdefs.h中查找以下行:
#define GWS_IN_USE GWS_PROB
将该行更改为:
#define GWS_IN_USE GWS_FREQ
然后重新编译MySQL。在这种情况下,无需重建索引。