检索Lucene搜索返回的所有文档的某些字段的最佳方法

时间:2010-03-24 22:24:56

标签: performance search lucene field documents

我想知道检索Lucene搜索者返回的所有文件的某个字段的最佳方法是什么。

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

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

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

然而,检索它们需要20多秒。

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

1 个答案:

答案 0 :(得分:4)

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

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

顾名思义,这些值是缓存的。那是后来的电话不费吹灰之力。您现在可以使用lucene document id查找此数组,以检索给定文档的该字段的值。