信息检索之——布尔检索(Boolean Retrieval)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_36203129/article/details/85197974

什么是布尔查询?

指的是用逻辑运算符如AND,OR, NOT把查询的词连接起来的查询。

一个例子

查询内容:

莎士比亚的哪部剧本包含Brutus及Caesar但是不包含Calpurnia?

布尔表达式:

Brutus AND Caesar AND NOT Calpurnia

解决方案:

1.暴力法

遍历文本中的单词,找到符合条件的。
缺点:
大型文本这样速度会非常慢,
NOT查询会更慢,需要遍历到文本结束才能确定;

优点:
实现简单;
天然支持文档动态变化,因为不用维护索引之类的东西。

2.倒排记录表

term-document incidence matrix 关联矩阵
在这里插入图片描述

查询方法:
给定查询Brutus AND Caesar AND NOT Calpurnia
取出三个词项对应的行向量 ,并对Calpurnia 的行向量求反,最后按位进行与操作

               110100 AND 110111 AND 101111 = 100100.

但是该矩阵高度稀疏(sparse), 占用了很大的空间。
解决办法是只记录1的位置,这种是倒排索引?(为什么叫这个名字?)
倒排记录表按docID排序(more later on why)
在这里插入图片描述
索引构建过程:

  1. 词条序列:<词条,docID>二元组
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/github_36203129/article/details/85197974