elasticsearch,lucene,inverted-index,forward-indexing,Solr,elasticsearch,Lucene,Inverted Index,Forward Indexing" /> elasticsearch,lucene,inverted-index,forward-indexing,Solr,elasticsearch,Lucene,Inverted Index,Forward Indexing" />

Solr 远期指数和反转指数为什么?

Solr 远期指数和反转指数为什么?,solr,elasticsearch,lucene,inverted-index,forward-indexing,Solr,elasticsearch,Lucene,Inverted Index,Forward Indexing,我读到了有关反向索引(Solr、Elastic search等文本搜索引擎使用)的内容,据我所知(如果我们以“Person”为例): 属性与人员的关系是反向的: John -> PersonId(1), PersonId(2), PersonId(3) London -> PersonId(1), PersonId(2), PersonId(5) 我现在可以在个人记录中搜索“住在伦敦的约翰” 这不是解决了所有的问题吗?为什么我们有转发(或常规数据库索引)呢?或者换句话说,在什么情况

我读到了有关反向索引(Solr、Elastic search等文本搜索引擎使用)的内容,据我所知(如果我们以“Person”为例):

属性与人员的关系是反向的:

John -> PersonId(1), PersonId(2), PersonId(3)
London -> PersonId(1), PersonId(2), PersonId(5)
我现在可以在个人记录中搜索“住在伦敦的约翰”


这不是解决了所有的问题吗?为什么我们有转发(或常规数据库索引)呢?或者换句话说,在什么情况下,常规索引是有用的?请解释一下。谢谢。

以下是Elasticsearch对反向索引的解释:

Elasticsearch使用一种称为倒排索引的结构,该结构旨在允许非常快速的全文搜索。倒排索引包括出现在任何文档中的所有唯一单词的列表,以及每个单词出现在其中的文档的列表。

反向索引用于快速全文搜索。常规索引效率较低,因为引擎会查找某个术语的所有条目,但索引速度非常快

你可以这样说:

  • 正向索引:索引速度快,查询效率低
  • 反向索引:快速查询,慢速索引
但是,它总是与上下文相关的。如果您将其与MySQL进行比较:myisam的读取速度快,innodb的插入/更新速度快,读取速度慢


请在此处阅读更多信息:

您缺少的一点是,远期指数和反转指数之间没有真正的技术区别。在这种情况下,“正向”和“反向”只是用来区分以下内容的描述性术语:

  • 文档中包含的单词列表
  • 包含单词的文档列表
只有当常规(正向)指数的概念已经存在时,反转指数的概念才有意义。在搜索引擎的上下文中,正向索引是术语向量;包含在特定文档中的术语列表。倒排索引是包含给定术语的文档列表


当你明白“正向”和“反向”这两个术语实际上只是用来描述你所谈论的指数性质的相对术语时——而指数实际上只是一个指数——你的问题就没有什么意义了。

谢谢。我明白这是一种区别于已有事物的方法。但我仍然没有发现正向指数和反向指数之间的任何区别(就其工作方式而言)。对我来说,这两种方法看起来都像是将字段映射到一组文档ID的索引。这就是我如何理解OracleBTree(也称为正向索引)是如何组织数据的。我看不出倒排索引的原理有什么不同。这让我回到了原点。:-)这就是我的观点——没有功能上的区别。倒排索引只是一个索引。。。但是向后看。正向索引将存储
{Document1:[“Hello”,“this”,“is”,“A”,“document”]}
,反向索引将存储(例如)
{“Hello”:[Document1],“this”:[Document1,Document40]}
。。。一个让你查找文档并找到内容,另一个让你查找单词并得到文档列表。在搜索方面,映射文档->w1,w2,w3对我来说似乎是一个低效的建议。想知道为什么会有这种情况?它们的实际用途是什么?@Roylee没有任何迹象表明反向索引是通过使用正向索引生成的。同样,这个术语并不是字面上的意思,它只是一个描述键/值对“方向”的术语。您无法将其合理化为一个定义良好的技术术语,因为它不是一个术语。还值得注意的是,该术语通常专门应用于全文搜索的上下文中,其中文档的所有内容都以某种方式被分解,并被视为索引中的一组键。