【问题标题】:In MySQL full-text search, how to search for documents that ONLY contain the specific words?在 MySQL 全文搜索中,如何搜索只包含特定单词的文档?
【发布时间】:2023-03-17 10:32:01
【问题描述】:

我有一个带有标题的表格,我只想找到完全由单词子集组成的标题。

例如,

SELECT title
FROM my_titles_table WHERE MATCH (title) AGAINST ('word1 word2 word3 ... wordN' IN NATURAL LANGUAGE MODE)

我想查找由 word1 word2 word3 ... wordN 或它们的子集组成的所有标题,但没有其他词。

例如,如果我的查询是“如何训练你的龙”作为我的话,那么我想找到像“龙”或“训练你的龙”或“你的龙来训练”这样的标题,而不是“地牢和龙”,因为“地牢”一词不在我的查询中。

【问题讨论】:

    标签: mysql full-text-search match


    【解决方案1】:

    我认为全文搜索不支持此功能。事实上,很难想出一个蛮力的方法来做到这一点。

    这是一种蛮力方法:

    where trim(replace(replace(replace(title, $word1, ''), $word2), ''), $word3, '')) = ''
    

    这并不完美,因为“pine apple”会匹配“pine apple”。

    嗯嗯。 . .正则表达式还有另一种选择:

     where title like concat('^(', replace('word1 word2 word3', ' ', '|'),
                              '[ ]*)+$)
    

    也就是说,匹配必须从字符串的开头和结尾开始,并且中间的单词必须全部匹配。

    据我所知,没有办法加快这样的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多