Inverted File Index 文件倒排索引 课件理解与习题解

原创 2016年06月01日 23:12:15

倒排索引是一种文件搜索的方式,它是搜索引擎实现的基础。它将文件内容中的词建立成索引,以此为依据搜索符合条件的文件。本文将根据高级数据结构课程课件简要介绍文件倒排索引的建立及其特点,然后重点进行pta中的题目分析。


介绍

文件倒排索引建立的过程主要是:

  1. 从文件中读取词
  2. 将该词提取为词干(word stemming),即去除第三人称形式、过去式、进行时等形式,留下词干),并去除分词(stop word),即”a”, “is”等没有意义的词。
  3. 检查该词是否已经在词典之中。
  4. 若不在,则将该词添加入词典之中。更新索引信息。
  5. 建立完毕后,将索引文件存入磁盘。

索引信息包括:词语, 词语出现总次数, (文件号;该文件中该词位置)

伪代码:

while ( read a document D ) {
    while ( read a term T in D ) {
        if ( Find( Dictionary, T ) == false )
            Insert( Dictionary, T );
        Get T’s posting list;
        Insert a node to T’s posting list;
    }
}
Write the inverted index to disk;

当倒排索引文件较大时,无法存在一台主机上,那么就涉及到倒排索引分布式存储技术。可以分为Term-partitioned Index与Document-partitioned Index。前者按照关键词将文件存在不同的主机上,全局建立索引,后者按照文件号将文件存在不同主机上,在每台主机上建立局部索引。
两种方式

前者查找性能更高,而后者更加可靠。两种索引存储方式的详细内容和详细比较请参照:倒排索引分布式存储

想象一下平时搜索引擎的使用场景,索引是动态变化的。所以索引需要定时更新,并建立主索引和辅助索引。

由于需要被索引的文档集可能是动态变化的(例如添加新文档、删除现有文档),因此索引需要适应这种变化。
最简单的更新办法是周期性地对文档集从头开始进行索引重构。如果要求能够及时检索到新文档,那么一种方法是同时保持两个索引:一个是大的主索引,保存在磁盘中,另一个是小的用于存储新文档信息的辅助索引,辅助索引保存在内存中。检索时可以同时遍历两个索引并将结果合并。而文档的删除记录在一个无效位向量中,在返回检索结果之前可以利用它过滤掉已经删除的文档。每当辅助索引变得很大时,就将它合并到主索引中。
引自1加1等于10的博客

下面我们介绍一下索引文件压缩。
一般来说,对索引文件进行压缩不但可以减小空间,并且可以提高索引效率。这是因为,采用高效的压缩算法,虽然将耗费一定时间在内存中进行解压,但因为能提高cache的利用率,并能提高从磁盘到内存的读取效率,所以总体来说效率将得到提升。
索引文件压缩的内容在 高级数据结构课程 课件中提到了两种实现方式:一是将词典看为单一字符串,以消除用定长方法来存储单词所存在的空间浪费;二是docID的存储只记录与上一项docID的差值来减少docID存储长度。
索引文件压缩的详细内容以及压缩的具体方式请参考:Tekkaman
的博客园

除压缩外,课件中还介绍到thresholding。这部分内容是说在现实使用中人们往往只关心结果中的前一部分,所以搜索时可以通过只搜索前x%来提高效率。

最后我们将介绍如何衡量与评价文件倒排索引系统的性能。

除响应时间、索引文件大小外,主要从精确度(Precision)和收回度(Recall)进行衡量,这也是题目中所经常出现的内容。

Precision
P = RR / (RR + IR)
Recall
R = RR / (RR + RN)

曲线


题目

While accessing a term, hashing is faster than search trees. (T or F)

可以通过搜索树、哈希表的方式来存储和访问term,而哈希表花费的是常数时间,所以访问更快。当然,哈希表存在存储不灵活等问题。
故为T

In distributed indexing, document-partitioned strategy is to store on each node all the documents that contain the terms in a certain range. (T or F)

考分布式索引,以文件为分割的索引将文件号为一个范围内的文件存在一个节点上。故为F。

When evaluating the performance of data retrieval, it is important to measure the relevancy of the answer set.

这里要注意,表现分为 data retrieval 和 information retrieval,要注意两者的区分。前者的标准是response time 与 index file space,后者才是relevancy of the answer set。这里放一张课件中的图:
用户体验
故应为F。

When measuring the relevancy of the answer set, if the precision is high but the recall is low, it means that: (2分)
A. most of the relevant documents are retrieved, but too many irrelevant documents are returned as well
B. most of the retrieved documents are relevant, but still a lot of relevant documents are missed
C. most of the relevant documents are retrieved, but the benchmark set is not large enough
D. most of the retrieved documents are relevant, but the benchmark set is not large enough

选项的前半部分并不重要,重要的是后半部分。精确度高而回收率低,说明搜索到的文件中不相关文件少,但是仍有大量相关文件没有搜索到。
故选B

Which of the following is NOT concerned for measuring a search engine? (2分)
A. How fast does it index
B. How fast does it search
C. How friendly is the interface
D. How relevant is the answer set

搜索引擎主要是引擎,与界面关系不大。故选C
衡量搜索引擎的指标主要是:建立索引的速度、搜索速度、对查询语句的处理。
衡量搜索引擎的因素

版权声明:本文为博主原创文章,未经博主允许不得转载。

一些算法的MapReduce实现——倒排索引实现

Introduce to Inverted List 倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或...

基于Hadoop的带词频属性的文档倒排索引

Inverted Index(倒排索引)是目前几乎所有支持全文检索的搜索引擎都要依赖的一个数据结构。基于索引结构,给出一个词(term),能取得含有这个term的文档列表(the list of do...

【索引算法】倒排索引

倒排索引 1.简介 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置...

ElasticSearch学习19_搜索引擎-倒排索引基础知识

搜索引擎的索引 1.单词——文档矩阵        单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代...

倒排文件索引(Inverted File Index)

倒排文件是一种在各大搜索引擎中被主要使用的索引的方式,并且它也是搜索引擎中一个核心的技术。 一个典型的倒排索引主要由词汇表(也叫索引项)和事件表(也叫文件链表)两部分组成。词汇表是用来存放分词词...

倒排文件索引(Inverted File Index)的建立

建立索引 目前主流的索引技术有三种:倒排文件、后缀数组和签名。后缀数组的方法虽然快,但是其维护困难,代价相当高,不适合做引擎的索引。签名是一种很好的索引方式,但倒排文件的速度和性能已经超过了签名。倒...

搜索引擎-倒排索引基础知识

搜索引擎的索引 1.单词——文档矩阵        单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,...
  • hguisu
  • hguisu
  • 2012年09月11日 19:49
  • 75188

倒排索引概念及完整实例

在计算机科学领域,倒排索引(也称为倒排文件)是一种存储了来自文本中的映射的索引数据结构。比如单词或者数字,对应到它们在数据库、一个文件或者一组文件中的位置。它是在文档检索系统中使用的最流行的数据结构,...

倒排索引详解及C++实现

1.介绍  倒排索引是现代搜索引擎的核心技术之一,其核心目的是将从大量文档中查找包含某些词的文档集合这一任务用O(1)或O(logn)的时间复杂度完成,其中n为索引中的文档数目。也就是说,利用倒排索引...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Inverted File Index 文件倒排索引 课件理解与习题解
举报原因:
原因补充:

(最多只允许输入30个字)