反向索引是一种索引数据结构, 用于存储从内容(例如单词或数字)到其在一个文档或一组文档中的位置的映射。简而言之, 它是一种类似于数据结构的哈希图, 可将你从单词引导到文档或网页。
倒排索引有两种类型:A
记录级倒排索引
包含每个单词的文档参考列表。一种
词级倒排索引
还包含每个单词在文档中的位置。后一种形式提供更多功能, 但需要更多处理能力和空间来创建。
假设我们要搜索文本"大家好", "本文基于倒排索引", "类似于数据结构的哈希图"。如果我们按(文本, 文本中的单词)索引, 则文本中具有位置的索引为:
hello(1, 1) everyone(1, 2) this(2, 1) article(2, 2) is(2, 3);
(3, 2) based(2, 4) on(2, 5) inverted(2, 6) index(2, 7) which(3, 1) hashmap(3, 3) like(3, 4) data(3, 5) structure(3, 6)
文档1中的单词" hello"("大家好")以单词1开头, 因此条目(1、1、1)以及文档2和3中的单词" is"分别位于" 3rd"和" 2nd"位置(此处的位置基于单词)。
该索引可以具有权重, 频率或其他指标。
建立反向索引的步骤:
取得文件
删除停用词:停用词是文档中最常出现且无用的词, 例如" I", " the", " we", " is", " an"。
词根词干
每当我想搜索"猫"时, 我都希望看到包含有关其信息的文档。但是文档中出现的单词称为"猫"或"猫", 而不是"猫"。为了将这两个词联系起来, 我将砍下每个阅读的词的一部分, 以便获得"词根"。有一些执行此操作的标准工具, 例如" Porter’s Stemmer"。
【倒排索引(反向索引)详细介绍】记录文件编号
如果单词已经存在, 则将文档引用添加到索引, 否则创建新条目。添加其他信息, 例如单词的频率, 单词的位置等。
对所有文档重复此操作, 并对单词进行排序。
例子:
WordsDocumentantdoc1demodoc2worlddoc1, doc2
倒排索引的优点是:
- 倒排索引是为了允许快速的全文本搜索, 但是当文档添加到数据库中时, 以增加处理为代价。
- 很容易开发。
- 它是文档检索系统中最流行的数据结构, 例如在搜索引擎中得到了大规模使用。
- 大的存储开销和更新, 删除和插入的高维护成本。
推荐阅读
- JavaScript基本数据结构(队列基本原理和实现)
- CSS 动画制作详细指南和代码示例
- Java中的数据类型经典指南
- CSS env()函数用法解析和代码示例
- PHP | gethostnamel()函数用法介绍
- PHP | min()函数用法介绍
- PHP Ds Map copy()函数用法介绍
- 用Python编写CSV文件详细指南
- 删除给定索引范围为[L – R]的数组元素