【问题标题】:Common words not showing up in FULLTEXT search resultsFULLTEXT 搜索结果中未显示的常用词
【发布时间】:2015-02-03 00:38:22
【问题描述】:

我正在使用全文搜索来搜索我正在制作的网站,以便按相关性对用户搜索查询进行排序。这对解决一个问题非常有效。当搜索词在我的表中填充超过 50% 的时间时,该查询将被忽略。我正在寻找一种解决方案,以不忽略表格中超过 50% 的行中的单词。

例如,在我的“items”表中,它可能看起来像这样:

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

如果用户搜索“海报”,则查询返回 0 个结果,因为它在表格中出现的次数过多。我怎样才能阻止这种情况发生?

我尝试过使用 IN BOOLEAN MODE,但这会带走我需要的功能(按相关性排序)。

这是我的 SQL 示例:

SELECT item_title
FROM items
WHERE MATCH(item_title, tags, item_category) AGAINST('poster')

【问题讨论】:

    标签: mysql sql full-text-search


    【解决方案1】:

    你必须重新编译 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。这种情况下不需要重建索引。

    【讨论】:

    • 感谢@Barmar 的回复。我会去哪里寻找“storage/myisam/ftdefs.h”?我正在使用 XAMPP/phpMyAdmin,但找不到文件/文件夹!
    • 我似乎仍然找不到“storage/myisam/ftdefs.h”。我尝试手动搜索并使用搜索栏,但仍然找不到。您提供的链接显示了一个 Linux 命令。 Windows 有类似的东西吗?
    • 我不知道。可能XAMPP不包含源代码,所以需要手动下载重新编译。
    • 感谢您的帮助,巴尔玛!
    猜你喜欢
    • 2023-04-07
    • 2011-10-12
    • 2021-02-23
    • 2021-09-24
    • 2011-05-10
    • 2011-02-14
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多