布尔模式搜索单个词MySQL的列

时间:2013-06-25 14:47:58

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

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

1 个答案:

答案 0 :(得分:0)

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

实现这项工作的一种方法是使用标准比较和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

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