哈希索引与倒排索引

时间:2015-04-03 16:30:35

标签: full-text-search relational-database hashtable inverted-index

据我所知,散列/反向索引分别将值/单词映射到记录/文档。 但是,哈希索引中的插入复杂度很低(因为它在溢出时添加了新的桶),但在反向索引中更多(由于维护文档ID的排序列表)。 这是否意味着它们基本相同,除了实现?

2 个答案:

答案 0 :(得分:1)

据我所知,与倒排索引相比,哈希索引用于完全不同的用例/场景。哈希索引只是从索引键到内存中给定行的确切位置的映射(主要用于关系数据库中的内存优化表),而反向索引实际上是从单词到文档的映射。遏制。

因此,如果我们看一下,一个单词可以包含在许多文档中,文档将由许多这样的单词共享。因此,在反向索引的情况下,许多键指向在许多这样的键上共同的文档ID,而在哈希索引的情况下,键指向的数据,即行数据可能彼此完全无关。

因此,它们与处理完全无关的场景并不完全相同,并且实施方式截然不同。

有关倒排索引的详细信息,请参阅此处的帖子:BigData: Inverted Index

答案 1 :(得分:0)

倒排索引是一种映射内容的数据结构(例如 令牌)移至其在文档中的位置。一个主要的好处 倒排索引是整个数据收集不必 搜索以查找有趣的文档。

考虑一本书。末尾的索引是 倒排索引。但这不是哈希索引。

哈希索引是使用 哈希表。 This image 显示他们如何存储数据:

enter image description here

其他数据结构可用于实现倒排索引, 例如树木。可以使用二叉树,但通常过于简单 所以改用rb树或b树。基于树的索引是 很难理解,因此图片没有太大帮助。他们有 使它们比基于散列的索引更可取的属性 拥有大量数据,例如更容易更新和具有 更好的最坏情况下的性能。