Lucene:没有存储的字段

时间:2009-08-22 14:45:28

标签: search-engine lucene

我只是想知道何时存在一种方法来读取Lucene索引中未存储但索引的字段?我需要,因为我有一个索引,我将迭代索引中的所有文档,以便应用一些分析,我需要稍后更新这些文档,为了更新我需要先删除,何时重新插入文献。问题是,我不知道什么时候可以读取未存储的字段,以便将它们原样复制到更新的文档中。

2 个答案:

答案 0 :(得分:1)

您可以使用Luke轻松查看索引。 编辑:我想我现在明白了这个问题。 Here是Andrzej Bialecki提出的解决方案,其中说:创建一个包含仅包含新/修改字段的文档的索引。 原始索引中的每个文档都将具有包含计算字段的共轭文档。使用ParallelReader搜索包含原始字段和计算字段的文档对。

答案 1 :(得分:0)

未存储的字段就是 - 不存储。无法从索引中检索其内容。

为了做你所说的,你有几个选择:

  • 存储每个字段,以便您可以从现有文档中创建新文档
  • 如果未存储的字段很大(即文本文件的内容),则在索引中存储指向原始内容的指针(即其文件路径)。创建新文档时,从现有文档中读取此指针,从原始源(即从文本文件中)获取字段内容,然后将其未存储到新文档中
  • 如果您没有更改未存储的字段,则可以检索现有文档,更新其他字段,然后将其放回索引中。这可能只适用于Lucene的后续版本(v2.2向上)。 编辑:尝试过此选项后,它无效 - 请参阅下面的评论。

最终,如果您需要获取未存储字段的值,则必须将其存储。