我正在使用全文搜索我正在制作的网站,以按相关性订购用户搜索查询。这有一个问题很好。当超过50%的时间在我的表中填充搜索词时,将忽略该查询。我正在寻找一种解决方案,不要忽略超过50%的表行的单词。
例如,在我的"项目"表,它可能看起来像这样:
item_name
---------
poster 1
poster 2
poster 3
poster 4
another item
如果用户搜索" poster",则查询返回0结果,因为它在表格中显示的次数太多。我怎样才能阻止这种情况发生?
我尝试过使用IN BOOLEAN MODE,但这会占用我需要的功能(按相关性排序)。
这是我的SQL的一个例子:
SELECT item_title
FROM items
WHERE MATCH(item_title, tags, item_category) AGAINST('poster')
答案 0 :(得分:2)
你必须重新编译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。在这种情况下,无需重建索引。