2

我想知道最好的方法是检索 Lucene 搜索器返回的所有文档的某个字段。

背景:每个文档都有一个日期字段(写在上面),我想显示所有找到的文档的时间线,所以我需要提取我通过搜索找到的所有文档的日期(天)字段。

我目前使用 Searcher.doc(int, FieldSelector) 检索每个文档,选择器仅检索特定字段。

我已经索引了 250k 文档,搜索本身不需要时间并返回大约 10k 文档 ID。

然而,检索这些需要 20 多秒。

我能做些什么来加快速度,但仍然获得我需要的所有价值?

4

1 回答 1

4

检索字段值的更好方法是使用 FieldCache。例如,如果字段值是字符串,则可以按如下方式检索值。

String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, "FieldName")

顾名思义,这些值是被缓存的。那是随后的调用不需要时间。您现在可以使用 lucene 文档 ID 查找此数组,以检索给定文档的该字段的值。

于 2010-03-25T05:25:13.910 回答