我想知道检索 Lucene 搜索器返回的所有文档的某个字段的最佳方法是什么。
背景:每个文档都有一个日期字段(写在上面),我想显示所有找到的文档的时间线,因此我需要提取通过搜索找到的所有文档的日期(日)字段。
我目前使用 Searcher.doc(int, FieldSelector) 检索每个文档,其中选择器仅检索特定字段。
我已经索引了 250k 文档,搜索本身不需要时间并返回大约 10k 文档 ID。
但是检索这些内容需要 20 多秒。
我可以做些什么来加快速度,同时仍然获得我需要的所有值?
最佳答案
检索字段值的更好方法是使用 FieldCache。例如,如果字段值为字符串,则可以按如下方式检索值。
String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, "FieldName")
顾名思义,这些值会被缓存。也就是说后续调用不需要时间。现在,您可以使用 lucene 文档 id 查找此数组,以检索给定文档的该字段的值。
关于performance - 检索 Lucene 搜索返回的所有文档的某些字段的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511879/