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



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

听起来您的数据是在文档单词结构中。

实现这项工作的一种方法是使用标准比较和having子句。以下内容将搜索"单词A"one_answers"单词B",但不搜索"单词C":

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

将其存储为一个单独的表,并在其中使用全文索引。

最新更新