【问题标题】:Boolean mode search on column of individual words MySQL布尔模式搜索单个单词 MySQL 的列
【发布时间】:2013-06-22 10:31:15
【问题描述】:

我想在没有全文索引的情况下对我的表执行布尔模式搜索。我的数据集需要非常精细的细节水平,因此我的文档将每个单词作为它自己的行,而不是每个文档都是一行。是否可以将常规索引作为布尔模式搜索的主题,而不是将全文索引(这里显然没用)作为主题?

【问题讨论】:

    标签: mysql full-text-search boolean-search


    【解决方案1】:

    听起来您的数据是文档字结构。

    完成这项工作的一种方法是使用标准比较和having 子句。以下将搜索“wordA”和“wordB”,但不搜索“WordC”:

    select DocumentId
    from DocumentWords dw
    group by DocumentId
    having max(word = 'WordA') > 0 and
           max(word = 'WordB') > 0 and
           mac(word = 'WordC') = 0;
    

    如果您想使用全文索引,则将您的文档连接在一起,执行以下操作:

    select DocumentId, group_concat(word separator ', ')
    from DocumentWords dw
    group by DocumentId
    

    将其存储为单独的表并在那里使用全文索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 2012-04-20
      相关资源
      最近更新 更多