布尔检索

术语信息检索(Information Retrieval,简称IR) 。information retrieval广义上是获取信息的意思。然而学术意义上的信息检索定义为:信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。

非结构化数据(unstructured data):指的是那些没有清晰和明确的语义结构的数据,而计算机不易处理这类的数据。
结构化数据(structured data):最典型的例子就是关系数据库。
严格意义上来讲非结构化数据在实际中并不存在。
文本数据往往被认为是典型的非结构化数据,但是如果考虑文中隐含的语言结构信息,那么它们并不算作是“非结构化数据”。
有时我们也将网页这种具有格式标记的数据称为“半结构化数据(semistructured data)”。

布尔检索模型接受布尔表达式查询,即通过and、or及not等逻辑操作符将词项连接起来查询。

通常需要知道某个查询返回结果的两发面的统计信息。
正确率(precision):返回的结果中真正相关

倒排索引:
左部被称为词项词典(dictionary,简称词典,有时也称vocabulary或者lexicon。)每个词项都有一个记录出现该词项的所有文本列表,该表中的每一个元素记录的是词项在某文档中的一次出现信息(该信息中往往还会保存文档中出现的位置),这个表中的每个元素通常被称为倒排记录(posting)。每个词项对应的整个表称为倒排记录表(posting list)或者倒排表(inverted list)。所有词项的倒排记录表一起构成全体倒排记录表。

建立索引的主要步骤:

  1. 收集需要建立索引的文档
  2. 将每篇文档转换成一个个词条的列表,这个过程通常被分为词条化。
  3. 进行语言学预处理,产生归一化的词条作为词项
    4 对所有文档按照出现的词项来建立倒排索引,索引包括一步词典和全体倒排记录表。

最终的得到的倒排索引中,词典和倒排记录表都是有存储开销。前者往往放在内存中,而后者由于规模大得多,通常放在磁盘上。因此两部分的大小都非常重要。
由于有些词在很多文档中存在,而另一些词在很少出现的文档数目却很少,所以采用定长的数据将会很浪费空间。对于内存中的一个倒排记录表,可以采用两种好的存储方法:一种是单链表,一种是变长数组。单链表便于文档插入和更新,因此可以通过增加指针的方式可以很自然的扩展到更高级的索引策略。而可变长数组的存储方式一方面可以节省指针消耗的空间,另一方面由于采用连续的内存存储,可以充分利用现代计算机缓存技术来提高访问速度。额外的指针在实际中可以编码城偏移地址融入到表中。如果索引更新不是很频繁的话,变长数组的存储方式在空间上更紧凑,便利也更快。另外我们也可以采用一种混合的方式,即定长数组的链表方式。当倒排记录表存在磁盘上的时候,他们被连续存放并且没有显示的指针,这样就可以把倒排记录表读入内存时,将该倒排记录表的大小及磁盘寻道的次数降到最小。

原文地址:https://www.cnblogs.com/mr-cc/p/6215403.html