`

倒排索引,反向索引-Inverted index

阅读更多

倒排索引(英语:Inverted index),也常被称为反向索引置入档案反向档案,是一种索引方法,被用来存储全文搜索下某个单词在一个文档或者一组文档中的存储位置映射。它是文档检索系统中最常用的数据结构

有两种不同的反向索引形式:

  • 一条记录的水平反向索引(或者反向档案索引)包含每个引用单词的文档的列表
  • 一个单词的水平反向索引(或者完全反向索引)又包含每个单词在一个文档中的位置。[1]

后者的形式提供了更多的兼容性(比如短语搜索),但是需要更多的时间和空间来创建。

 

例子

英文为例,下面是要被索引的文本:

  • T0 = "it is what it is"
  • T1 = "what is it"
  • T2 = "it is a banana"

我们就能得到下面的反向文件索引:

 "a":      {2}
 "banana": {2}
 "is":     {0, 1, 2}
 "it":     {0, 1, 2}
 "what":   {0, 1}

检索的条件"what""is" 和 "it" 将对应这个集合\{0,1\} \cap \{0,1,2\} \cap \{0,1,2\} = \{0,1\}

对相同的文字,我们得到后面这些完全反向索引,有文档数量和当前查询的单词结果组成的的成对数据。 同样,文档数量和当前查询的单词结果都从零开始。所以,"banana": {(2, 3)} 就是说 "banana"在第三个文档里 (T2),而且在第三个文档的位置是第四个单词(地址为 3)。

"a":      {(2, 2)}
"banana": {(2, 3)}
"is":     {(0, 1), (0, 4), (1, 1), (2, 1)}
"it":     {(0, 0), (0, 3), (1, 2), (2, 0)} 
"what":   {(0, 2), (1, 0)}

如果我们执行短语搜索"what is it" 我们得到这个短语的全部单词各自的结果所在文档为文档0和文档1。但是这个短语检索的连续的条件仅仅在文档1得到。

分享到:
评论

相关推荐

    倒排索引处理文档

    倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 ...

    python 实现倒排索引的方法

    倒排索引(Inverted Index),又称为反向索引或逆向索引,是一种用于快速查询文档集合中包含特定词语的文档的技术。传统的正向索引是根据文档来建立索引,而倒排索引则是根据词汇来建立索引,每个词条指向包含该词条...

    文档倒排索引的MapReduce程序设计与实现

    倒排索引(Inverted Index),又称反向索引或置入档案,是一种广泛应用于全文搜索的数据结构。它主要记录了文档集合中某个单词出现的位置信息,即通过单词来索引文档。这种索引方式与传统的文档索引(正向索引)相反...

    Visualized-InvertedIndex:可视化的倒排索引

    倒排索引该项目是为反向索引实现的,它将从目录中读取所有.txt文件,并按字母顺序列出所有单词,以提供每个文件中每个单词的位置和外观。 输入参数在JSON文件中传递,该文件包含用于从每个文件中提取单词的定界符,...

    Python倒排索引之查找包含某主题或单词的文件

    倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。这篇文章主要介绍了Python倒排索引之查找...

    Hadoop 下单词反向索引程序实验报告.pdf

    实验代码包括了MapReduce作业的实现,如`Map/ReduceInvertedIndex`,以及自定义的输入格式`TokenInputFormat`,键值对生成器`ValuePair.java`,以及反向索引类`InvertedIndex.java`。 4. **实验数据**:实验数据是...

    InvertedIndex:MapReduce 格式的大型文档的倒排索引。 Apache Hadoop、Java

    倒排索引,又称为反向索引,是将每个词项关联到包含该词项的所有文档的列表。在传统索引中,我们通常通过文档ID找到关键词,而在倒排索引中,我们通过关键词找到文档ID。这种索引方式非常适合于大规模文本数据的快速...

    InvertedIndex:Java反向索引的实现

    倒排索引 我在这里使用Java实现了反向索引。 它支持来自文件的输入和简单的查询搜索。 用法: 1)将要索引的文档重命名为filex.txt,其中x为No。 文件。 确保从0开始。 2)将文件复制到.java文件所在的目录中。 ...

    booleanSearcher:该程序对倒排索引执行布尔搜索

    输入程序: 搜索查询反向索引文件的路径(例如C:\ Test \ out_invertedIndex.txt) 布尔运算类型(AND表示1,OR表示2,AND表示3 压缩类型(0表示无压缩,1表示字典字符串) 程序的输出:包含搜索查询结果out_...

    Inverted-Index

    项目1倒排索引 对于此项目,您将编写一个Java程序,该程序递归处理目录中的所有文本文件并构建一个反向索引,以存储从单词到找到这些单词的文档(以及这些文档中的位置)的映射。 例如,假设我们在反向索引中存储了...

    lucene搜索的步骤

    4. **建立索引**:处理后的词汇项会构成词典(Dictionary),同时创建反向索引表(Inverted Index)。反向索引将词汇项映射到包含该词汇项的文档列表,以便快速查找相关文档。 5. **存储索引**:最后,索引会被写入...

    Search-Engine-TF-IDF:使用 Python 搜索语料库。 Java 实现即将推出

    算法概述:准备了一个倒排索引,它是一个以单词为键和一个字典作为值的 Python 字典这个嵌套字典有一个文档,其中单词作为关键字出现,日志词频 (tf) 值作为值 结果集是一个python字典,以文档索引为键,以存储的...

    全文检索原理

    #### 反向索引(Inverted Index) 反向索引是全文检索中极其关键的概念,它存储了从词汇到文档的映射关系,与文档到词汇的自然映射相反。通过反向索引,系统可以迅速定位到包含特定词汇的所有文档,极大地提升了...

    分享一本搜索引擎的电子书

    4. **信息存储与索引构建**:讨论如何高效地存储和组织网页数据,包括倒排索引(Inverted Index)的概念和构建方法,以及如何利用位图(Bitvector)、B树(B-tree)等数据结构进行快速查找。 5. **查询处理**:解释...

    hbase原理和设计

    1. **倒排索引(Inverted Index)**:建立非RowKey字段到RowKey的映射关系。 2. **自定义MapReduce程序**:编写MapReduce作业来实现特定的查询需求。 3. **HBase Coprocessor**:通过Coprocessor在服务器端执行复杂的...

Global site tag (gtag.js) - Google Analytics