【发布时间】:2012-10-26 10:12:44
【问题描述】:
我试图了解后台到底发生了什么。
给定倒排索引的简化模型(忘记位置和分数): 对于每个单词,都有一个排序的文档 ID 列表。 多个单词查询与这些排序列表相交以产生另一个这样的列表。 (最后有排名)
例如
word1: 1 3 7 9 10 11 ...
word2: 2 3 4 9 10 12 ...
以下对字段的理解是否正确?
不同的字段意味着不同的索引空间或至少不同的列表。例如拥有 abstract 和 body 字段可能最终会出现这样的场景:
abstract:word1 7 10 ...
body:word1 1 3 9 10 11 ...
abstract:word2 3 4 ...
body:word2 1 3 9 10 12 ...
这种理解正确吗?如果不是,就底层倒排索引而言,这些字段是什么?我找不到任何明确说明它是如何在内部完成的文档。
除此之外,我想知道是否支持在所有/任何字段中搜索等功能。如果像我假设的那样实施,这应该很麻烦,或者需要通过保留上面的列表来实现冗余。通过完整单词列表的子范围实现字段当然可以更好地执行。
很高兴知道 Lucene 实际做了什么。
【问题讨论】:
标签: lucene indexing inverted-index