我正在使用全文搜索我正在做的网站,以命令用户搜索查询的相关性。这对解决一个问题很有效。当搜索项在我的表中填充的时间超过50%时,将忽略该查询。我正在寻找一个解决方案,以不忽略超过50%的行表中的单词。
例如,在我的“items”表中,它可能如下所示:

item_name
---------
poster 1
poster 2
poster 3
poster 4
another item

如果用户搜索“poster”,查询将返回0个结果,因为它在表中出现的次数太多。我怎样才能阻止这一切的发生?
我尝试过在布尔模式下使用,但这会带走我需要的功能(按相关性排序)。
下面是我的SQL示例:
SELECT item_title
FROM items
WHERE MATCH(item_title, tags, item_category) AGAINST('poster')

最佳答案

你必须重新编译MySQL来改变这一点。从Fine-Tuning MySQL Full-Text Search
自然语言搜索的50%阈值由选择的特定加权方案确定。要禁用它,请在storage/myisam/ftdefs.h中查找以下行:

   #define GWS_IN_USE GWS_PROB

将该行改为:
   #define GWS_IN_USE GWS_FREQ

然后重新编译MySQL。在这种情况下,不需要重建索引。

07-24 09:37
查看更多