【问题标题】:MySQL: Full-text search in boolean mode not working as expectedMySQL:布尔模式下的全文搜索未按预期工作
【发布时间】:2017-04-05 13:16:24
【问题描述】:

我在使用布尔模式下的 MySQL 全文搜索功能时遇到问题。我要运行的查询如下:

SELECT v.id v_id,
    v.duration v_duration,
    v.title v_title,
    v.description v_description
FROM videos v
JOIN videos_search_text vst ON vst.video_id = v.id
WHERE MATCH(vst.search_text) AGAINST (? IN BOOLEAN MODE);

如果我将? 替换为"+the +black* +key*",我将得不到任何结果。但是,如果我删除“the”之前的“+”并搜索"the +black* +key*",我会得到大约 100 个结果,这是正确的。但是所有返回的结果都包含“the”...那为什么第一个字符串没有返回结果呢?

注意:我将最小字长设置为 1,以防万一。

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    已解决:

    问题在于 MySQL 在全文索引中不包含停用词(例如“the”)。因此,在第一个字符串中,它不包含在搜索短语中,并返回 "+black* +key*" 的结果。如果您尝试使用 + 运算符强制将“the”(或任何其他停用词)包含在搜索中,则不会返回任何结果,因为“the”不在正在搜索的索引中。

    我采取的解决方案是在选项文件中禁用停用词过滤。您可能会采取的另一种解决方案是将数据库中的所有停用词提取到您的应用程序中,并在添加 + 运算符之前删除搜索字符串中出现的所有停用词。

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 2021-01-12
      • 2012-02-02
      相关资源
      最近更新 更多