反向索引和普通的旧索引有什么区别?

在软件工程中,我们一直在创建索引(例如,在数据库中) ,但我也听到很多人谈论倒排索引。这两者之间有什么本质上的区别吗?听起来是一样的。

47669 次浏览

在倒挂指数中,我们有以下表格:

Word1-> 文档列表(排序顺序)

Word2-> 文档列表(排序顺序)

它对于搜索引擎查询处理非常有用,因为它允许我们查找出现单词的文档。

你可以使用有监督的机器学习来建立这个倒置的索引。

One common use is 允许快速全文搜索

这两种类型表示 directionality。一个带您通过索引 前进,另一个带您通过索引 倒退(相反)。就是这样。这里没什么神秘的。否则,这两种类型是相同的,这只是一个问题,什么信息,你 ,并作为一个结果,什么信息,你试图 找到。

为了回答你的问题,我认为实际上没有办法知道为什么它的用途是什么。定义哪个是 forward哪个是 inverted非常重要的唯一原因就是这样我们就可以对它们进行讨论,每个人都知道我们在讨论哪个方向。想想术语“左”和“右”: 它们是相对的。哪一个并不重要,除了每个人都需要同意哪一个是“左”,哪一个是“右”,这样单词才有意义。如果,作为一种文化,我们决定向左和向右翻转,那么你就会有同样的问题去弄清楚什么是“右转”和什么是“左转”,因为大家一致认为的意思已经改变了。然而,命名是任意的,所以哪一个是哪一个(本身)并不重要-重要的是我们所有的 同意上的意思。

在你的评论中,你问,“请不要只是定义术语”,你没有抓住要点,我认为你只是被措辞所困扰,而它们之间完全没有区别。


For the benefit of future readers, I will now provide several "forward" and "inverted" index examples:

示例1: Web 搜索

如果你认为一个索引的倒数类似于 数学中函数的逆运算,其中的倒数是一个具有不同形式的特殊事物,那么你就错了: 这里的情况并非如此。

在搜索引擎中,你有一个文档列表(网站上的页面) ,你可以在其中输入一些关键字并得到结果。

A 远期指数远期指数 (or just index) is the 文件清单, and which words appear in them. In the web search example, Google crawls the web, building the list of documents, figuring out which words appear in each page.

反向指数反向指数单词列表,以及它们出现在其中的文档。在网络搜索的例子中,你提供了单词列表(你的搜索查询) ,Google 生成了文档(搜索结果链接)。

它们都是指数——这只是一个方向的问题。正向是从 document-> to-> words,反向是从 words-> to-> document。

示例2: DNS

另一个例子是 DNS 查找(接受一个主机名,并返回一个 IP 地址)和反向查找(接受一个 IP 地址,并给出主机名)。

例子3: 一本书

一本书后面的索引实际上是一个 反向指数反向指数,正如上面的例子所定义的-一个单词列表,以及在书中哪里可以找到它们。在一本书中,目录就像一个 forward index: 它是一个书中包含的文档(章节)的列表,除了没有在这些章节中列出单词,目录只是给出了这些文档(章节)所包含内容的名称/大致描述。

Example 4: Your cell phone

手机中的 远期指数远期指数是联系人列表,以及与这些联系人相关的电话号码(手机号、家庭号、工作号)。反向指数反向指数允许你手动输入电话号码,当你点击“拨号”时,你看到的是对方的名字,而不是号码,因为你的手机已经获取了电话号码,并找到了与之相关的联系人。

索引有很多种类型,比如 B 树、 R 树、散列... ... 为了不同的目的,我们必须选择正确的索引。

倒排索引是一种特殊的索引。全文搜索引擎中常用的倒排索引。使用反向索引,我们可以尽快找出一个单词在文档(或文档集)中的位置。考虑到内存和 CPU 的限制,其他索引无法完成这项工作。

You can read lucene document for more details. It's a open source search engine. http://lucene.apache.org/java/docs/index.html

通常,当谈到索引时,你指的是为了加速应用程序(例如 MySQL 或其他 RDBMS 请参考 MySQL 的文档)而增加的一些计算或存储的过程结果。索引也可以与缓存等相关。

反向索引创建的文件结构主要用于(全文)搜索。

反向索引由两个主要文件组成:

  • 词汇量
  • 事件

词汇表中的常用词是从文本中提取出来的(当然是在过滤掉像代词这样的黑名单词之后)。出现文件保存 word 和文档之间的连接(word1出现在 doc1和 doc2中,而不是 doc3中)。它以矩阵的形式表示。

Indexing process - inverted index

在上图中显示了创建上述两个文件的过程。

如果你对这个问题更感兴趣,我可以向你推荐里卡多 · 耶特写的一本伟大的书——现代信息检索(See it on Amazon)——大约200页。

希望对你有所帮助: -)

他们称之为反转,仅仅是因为已经有了一个正向指数。以搜索引擎为例,它由两部分组成: 第一部分是构建从文档到文档索引的“网络爬虫和解析器”,第二部分是构建从文档到文档索引的搜索数据库。因为存在第一个索引,所以我们自然地将第二个索引称为反向索引。

If you name the TOC (Table of Content) of a book as index, then you should call the index at the end of book as "inverted index". Or, in other side, you can call the TOC as inverted index.

还有一点不同:

与正向索引相比,使用反向索引处理更新的成本较高。

Forward index handles updates easily by reflecting the changes only in the corresponding document index, whereas in the inverted index, the same change has to reflect in multiple positions across the inverted index.

“倒置词索引”一词是指 包含多个单词的单一文档,每个单词包含 (或识别)许多文件的清单。这实际上就是采用一对多关系(文档到文字)和反转(或逆转)它,这样一个新的“反转”一对多关系现在存在,这是每个独特的单词相关的许多文档(即,所有包含该单词)。它的起源就是这么简单,在计算机和电子高速索引存在之前很久,“倒索引”这个术语就被用来描述同一类型的手工索引(是的,诚然,我是一个老古董程序员,几乎可以认为 Grace Hopper 是一个“可爱的年轻女士”的年龄,当 COBOL 还是一种闪亮的新语言的时候,适合追求)。请不要现在就抛弃我们这些老家伙,因为我们可能偶尔会提供一些有用的,甚至可能是有价值的,历史性的点滴——当我们的个人 RAM 仍然工作的时候,也就是说。[咧嘴笑]