Lucene的多场指数究竟是什么?

时间:2012-11-06 12:45:12

标签: lucene indexing inverted-index

我试图了解后台到底发生了什么。

给出简化的倒置指数模型(忘记位置和分数): 对于每个单词,都有一个文档ID的排序列表。 Mutli单词查询与那些排序列表相交,以产生另一个这样的列表。 (最后有排名)

e.g。

word1: 1 3 7 9 10 11 ...
word2: 2 3 4 9 10 12 ...

以下对字段的理解是否正确?

不同的字段表示不同的索引空间或至少不同的列表。例如有字段抽象和正文可能会在这样的场景中结束:

abstract:word1 7 10 ...
body:word1     1 3 9 10 11 ...
abstract:word2 3 4 ...
body:word2     1 3 9 10 12 ...

这种理解是否正确?如果没有,根据底层倒排索引,这些字段是什么?我找不到任何明确说明如何在内部完成的文档。

除此之外,我想知道是否支持在全部/任何字段中搜索等功能。如果按照我的假设实现,这应该是麻烦的,或者通过保持上面的列表也需要冗余。通过完整单词列表的子范围来实现字段肯定会表现得更好。

很高兴知道Lucene实际上做了什么。

1 个答案:

答案 0 :(得分:1)

自Lucene 4.0以来,每个字段都有不同的术语字典,因此您的抽象和正文的发布列表将单独存储。

  

除此之外,我想知道是否支持在全部/任何字段中搜索等功能。如果按照我的假设实现,这应该是麻烦的,或者通过保持上面的列表也需要冗余。通过完整单词列表的子范围来实现字段肯定会表现得更好。

无法理解“子范围或完整单词列表”的含义,但如果您在多个字段上运行BooleanQuery,Lucene将动态合并帖子列表。

  

很高兴知道Lucene实际上做了什么。

源代码可以自由访问。 : - )