在软件工程中,我们一直在创建索引(例如,在数据库中),但我也听到很多人谈论反向索引。两者之间有根本不同吗?他们听起来像是同一件事。
在软件工程中,我们一直在创建索引(例如,在数据库中),但我也听到很多人谈论反向索引。两者之间有根本不同吗?他们听起来像是同一件事。
Answers:
一种常见的用法是“ ...允许快速全文本搜索”。
这两种类型表示方向性。一个使您向前浏览索引,另一个使您向后(反向)浏览索引。而已。这里没有神秘的事物。否则,这两种类型是相同的,这只是您拥有哪些信息的一个问题,结果就是您要查找什么信息。
为了解决您的问题,我认为实际上没有办法知道为什么今天的用途。定义哪个forward
和哪个是重要的唯一原因inverted
是,我们大家都可以就它们进行对话,并且每个人都知道我们在谈论哪个方向。考虑一下术语“左”和“右”:它们是相对的。哪一个无关紧要,除了每个人都需要同意哪个是“左”和哪个是“右”才能使单词具有含义。如果作为一种文化,我们决定向左和向右翻转,那么您将遇到同样的问题,因为自从商定的含义发生了变化,才能确定“右转”与“左转”是什么。但是,命名是任意的, 在意义上。
在您提出的“请不要仅仅定义术语”的评论中,您没有抓住要点,而我认为您只是在措辞上无所适从。
为了将来的读者受益,我现在提供几个“正向”和“反向”索引示例:
如果您认为索引的倒数类似于数学中的函数的倒数,其中倒数是具有不同形式的特殊事物,那么您会误会:这里不是这种情况。
在搜索引擎中,您具有文档列表(网站页面),在其中输入一些关键字并获得结果。
一个正向索引(或只是指数)的文件清单,以及这些词出现在其中。在网络搜索示例中,Google爬行了网络,建立了文档列表,弄清楚了哪些单词出现在每个页面中。
该倒排索引是单词的列表,以及它们出现的文件。在网络搜索示例中,您提供单词列表(您的搜索查询),然后Google生成文档(搜索结果链接)。
它们都是索引-这只是您要朝哪个方向发展的问题。转发是从文档->到->单词,反向是从单词->到->文档。
另一个示例是DNS查找(采用主机名并返回IP地址)和反向查找(采用IP地址并为您提供主机名)。
如上例所示,书后的索引实际上是倒排索引 -单词列表以及在书中找到它们的位置。在书中,目录就像一个前向索引:它是书中包含的文档(章节)列表,除了不列出这些部分中的单词,目录仅给出了名称/内容概述这些文件(章节)中包含的内容。
手机中的前向索引是您的联系人列表,以及与这些联系人相关联的电话号码(手机,家庭,工作)。该倒排索引是什么让您手动输入电话号码,当你点击“拨号”你看这个人的名字,而不是数量,因为你的手机已经采取了电话号码,发现你与它相关的接触。
他们称其为“倒转”是因为已经有一个前向索引。以搜索引擎为例,它由两部分组成:第一部分是“网络爬虫和解析器”,它建立从文档到单词的索引,第二部分是搜索数据库,它建立从单词到文档的索引。由于第一个索引存在,我们自然将第二个索引称为倒排索引。
如果将书的目录(目录)命名为索引,则应将书末的索引称为“倒排索引”。或者,另一方面,您可以将TOC称为反向索引。
inverted index
即使我们生活中的所有正常指标都被用作了我们发明一个新术语的原因inverted
。
通常,当谈到索引时,您的意思是为了加快应用程序的执行速度而增加了一些计算或存储了过程的结果(例如MySQL或其他RDBMS 咨询MySQL文档)。索引也可以与缓存等相关。
反向索引创建的文件结构主要用于(全文搜索)。
倒排索引由两个主要文件组成:
词汇表中是从文本中提取的常用词(当然是在过滤了诸如代词之类的黑名单词之后)。出现文件保留单词和文档之间的连接(word1出现在doc1和doc2中,而不出现在doc3中)。它以矩阵形式表示。
上图中显示了创建提到的两个文件的过程。
如果您对此问题有进一步的兴趣,我可以为您推荐一本由里卡多·耶德(Ricardo Yated)撰写的好书-现代信息检索(在Amazon上查看),大约200页。
希望能帮助到你 :-)
正态性已经很好地区分了前向索引和反向索引,但是对于为什么一个被称为正向索引而另一个被称为反向索引的问题,也许这就是为什么它们被这样称呼的原因
以搜索引擎爬网和建立索引(或为书建立索引)为例,在您爬网(或阅读书本)或前进时,可以同时构建前向索引。因此,如果您要抓取10个网页(或一本书中的10个章节),则可以抓取第一个网页(阅读第一章),然后列出该网页中出现的单词列表(该章中出现的单词)并继续此过程适用于其他网页(其他章节),因此当您抓取所有10个网页(阅读所有10章)时,您的前向索引已完成,每个网页(章节)均指向其中包含的单词列表。
但是要创建反向索引,您必须爬网所有10个网页(阅读10章),然后从每个文档列表中提取每个单词,然后找出包含该单词的文档。因此,这就像在您爬网网页(阅读本书的各章)之后向后退。因此将其称为倒排索引。
这只是我的猜测。
索引有很多类型。例如,B树,R树,哈希...出于不同的目的,我们必须选择正确的索引。
倒排索引是一个特殊的索引。倒排索引通常在全文搜索引擎中使用。使用倒排索引,我们可以尽快找出单词在文档(或文档集)中的位置。考虑一下内存和cpu的限制,其他索引无法完成这项工作。
您可以阅读lucene文档以获取更多详细信息。这是一个开源搜索引擎。 http://lucene.apache.org/java/docs/index.html
术语“倒排单词索引”是指包含多个单词的单个文档与包含(或标识)多个文档列表的每个唯一单词之间的关系变化。这实际上是采取一对多关系(文档转换为单词)并将其反转(或逆转),从而现在存在新的“反转”一对多关系,该关系是与多文件(即所有包含该词的文件)。它的起源确实如此简单,并且在计算机和电子高速索引还没有出现之前,“倒排索引”一词就被用来描述相同类型的手动索引(是的,我是一个古老的geezer程序员,几乎年龄已经足够大,可以将格蕾丝·霍珀(Grace Hopper)视为“甜美的小姐” 当COBOL是一种崭新的语言时,适合求婚的年龄)。请不要暂时丢弃我们的Geezer,因为有时我们可能会提供有用的甚至可能有价值的一两个历史记录-当我们的个人RAM仍在工作时。[咧嘴]
在倒排索引中,我们具有以下形式:
word1->文档列表(按顺序排列)
word2->文档列表(按排序顺序)
这对搜索引擎查询处理非常有用,因为它使我们能够找到单词中出现的文档。
您可以使用监督机器学习来构建此反向索引。
另一个不同之处:
与前向索引相比,使用反向索引处理更新是昂贵的。
前向索引仅通过反映相应文档索引中的更改来轻松处理更新,而在反向索引中,相同的更改必须在反向索引中的多个位置中反映出来。