我想知道检索Lucene搜索者返回的所有文件的某个字段的最佳方法是什么。
背景:每个文档都有一个日期字段(写在上面),我想显示所有找到的文档的时间轴,所以我需要提取我在搜索中找到的所有文档的日期(日)字段。 / p>
我目前使用Searcher.doc(int,FieldSelector)检索每个文档,其中选择器只检索特定字段。
我索引了250k个文档,搜索本身不需要时间,并返回大约10k文档ID。
然而,检索它们需要20多秒。
我可以做些什么来加快速度,但仍能获得我需要的所有价值?
答案 0 :(得分:4)
检索字段值的更好方法是使用FieldCache。例如,如果字段值为字符串,则可以按如下方式检索值。
String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, "FieldName")
顾名思义,这些值是缓存的。那是后来的电话不费吹灰之力。您现在可以使用lucene document id查找此数组,以检索给定文档的该字段的值。