我正在阅读倒置索引(由Solr,Elastic Search等文本搜索引擎使用),据我所知(如果我们采用#34; Person"作为示例):
Person关系的属性被反转:
John -> PersonId(1), PersonId(2), PersonId(3)
London -> PersonId(1), PersonId(2), PersonId(5)
我现在可以搜索居住在伦敦的约翰的个人记录'
这不能解决所有问题吗?为什么我们有前向(或常规数据库索引)?或者换句话说,在什么情况下常规索引是有用的?请解释。感谢。
答案 0 :(得分:17)
您缺少的一点是前向索引和倒排索引之间没有真正的技术区别。在这种情况下,“前进”和“倒置”只是用于区分的描述性术语:
如果常规(前向)索引的概念已经存在,则倒排索引的概念才有意义。在搜索引擎的上下文中,前向索引将是术语向量;特定文件中包含的术语列表。倒排索引将是包含给定术语的文档列表。
当你明白术语“前进”和“倒置”实际上只是用于描述你所谈论的索引性质的相对术语 - 而且实际上索引只是一个索引 - 你的问题不是真的有意义。
答案 1 :(得分:3)
以下是来自Elasticsearch的反向索引的解释:
Elasticsearch使用一种称为倒排索引的结构,旨在实现非常快速的全文搜索。倒排索引包含出现在任何文档中的所有唯一单词的列表,对于每个单词,它包含出现在其中的文档列表。 https://www.elastic.co/guide/en/elasticsearch/guide/current/inverted-index.html
反向索引用于快速全文搜索。常规索引效率较低,因为引擎会查看一个术语的所有条目,但索引速度非常快!
你可以这样说:
但是,它始终与语境相关。如果你把它与MySQL进行比较:myisam有快速读取,innodb有快速插入/更新和慢读。
在此处阅读更多内容:https://www.found.no/foundation/indexing-for-beginners-part3/