B树索引与倒排索引?

时间:2017-11-28 17:14:19

标签: indexing binary-tree inverted-index

这是我对两者的理解

B树索引: - 它通常用于数据库列。它将列内容保持为键,将row_id保持为值。它以关键的方式保持密钥 快速找到键和行位置

倒置索引: - 通常用于全文搜索。这里文档中的单词也作为键,以排序的方式与doucument location / id一起存储 作为价值。

那么b / w B树索引和倒置索引的区别是什么。对我来说,他们看起来一样

1 个答案:

答案 0 :(得分:3)

简答:

  • 是的,他们有同样的目的 - 快速找到事情
  • 区别:对于
  • 有什么用处/特别擅长
  • 和btw命名也非常混乱

答案很长:

命名

我的知识来自于SQL世界的实践,所以对我而言,数据存储曾经等于&#34;数据库&#34; 以及允许快速查找内容的结构 - 一个< EM>&#34;指数&#34;

诀窍是 - 搜索引擎已经调用了他们的存储&#34; index&#34; ,那么你如何称之为索引&#34;索引&#34;? &#34;反向索引&#34; ,当然!为什么倒置?因为,正如我在您的问题中已经看到的那样,它只是反转了主存储。存储就像primary key --> values,辅助结构将其反转为values --> primary key,并帮助快速按值查找文档。

<强>目的

你的问题有各种各样的想法。 "Inverted index"实际上更像是&#34;一种数据结构,可帮助查找已存储的文档&#34;而B-Tree只是这种结构的一种实现。

理论上可以使用您想要的任何数据结构实现索引。哈希,图形,树,数组,位图......它只取决于你的用例。

差异

B-Tree适用于更改的数据,因此可以使用,例如在数据库和文件系统中。缺点:多个索引不能在一个查询中一起使用(我猜因为这个结构是动态的,因此对文档的引用没有排序),并且它的数据往往分散,因此IO可能成为一个问题。 / p>

"Inverted index"使用Bitmaps / Arrays并对所有内容进行排序(值列表和文档引用列表)。这些对静态数据集很有用。并且由于排序的性质,可以一起使用多个索引。缺点:更新不具备性能(新文档意味着在排序列表中的某处插入值),使用技巧就像将数据批量保存在一起并在后台进程中合并为更大批量。