【发布时间】:2009-08-22 14:45:27
【问题描述】:
我只是想知道何时存在读取 Lucene 索引中未存储但已编入索引的字段的方法?我需要,因为我有一个索引,我将遍历索引中的所有文档以应用一些分析,我需要稍后更新这些文档,为了更新我需要先删除以及何时重新插入文档。问题是我不知道何时可以读取未存储的字段以便将它们原样复制到更新的文档中。
【问题讨论】:
标签: search-engine lucene
我只是想知道何时存在读取 Lucene 索引中未存储但已编入索引的字段的方法?我需要,因为我有一个索引,我将遍历索引中的所有文档以应用一些分析,我需要稍后更新这些文档,为了更新我需要先删除以及何时重新插入文档。问题是我不知道何时可以读取未存储的字段以便将它们原样复制到更新的文档中。
【问题讨论】:
标签: search-engine lucene
您可以使用Luke 轻松查看索引。 编辑:我想我现在明白了这个问题。 Here 是 Andrzej Bialecki 提出的解决方案,它说:创建一个仅包含新/修改字段的文档的索引。 原始索引中的每个文档都有一个带有计算字段的共轭文档。使用ParallelReader 搜索具有原始字段和计算字段的文档对。
【讨论】:
未存储的字段就是这样 - 未存储。无法从索引中检索它们的内容。
为了做到你所说的,你有几个选择:
最终,如果您需要获取未存储字段的值,则必须将其存储。
【讨论】:
IndexReader 检索文档时,似乎未存储的字段已从文档中删除。正如我所说的那样,将重新添加缺少未存储字段的文档,因此这种方法实际上并不是一个有效的选择。看起来您必须存储该字段的值才能执行您想要执行的操作。 [更新答案以反映这一点]