【问题标题】:Best way to retrieve certain field of all documents returned by a Lucene search检索 Lucene 搜索返回的所有文档的特定字段的最佳方法
【发布时间】:2011-01-31 11:56:31
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: performance search lucene field documents


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多