Lucene - 从文档中加载延迟字段

时间:2014-01-28 14:57:48

标签: lucene load field document lazy-evaluation

有人有一个想法,如何加载lucene搜索者懒惰的字段? 我不明白......

我的Lucene-Indexs'文档包含以下字段:

  • UF1:未存储的字段1
  • UF2:Unstored Field 2
  • ......:其他一些未存储的字段
  • SF1 - 存储字段1
  • SF2 - 存储字段2 - >但是这个文本非常多

所以现在我正在搜索索引。当我得到非常多的结果文档时,似乎SF2中的所有内容都被lucene加载,因此RAM非常快。 但是,我需要通过此搜索获得的唯一字段是SF1。此搜索永远不会使用SF2。

是否可以从加载到生成的文档中的特殊字段“SF2”中排除。

// Some initializing and query preparing...
final IndexSearcher searcher = new IndexSearcher(this.getReader());
TopDocs hits = searcher.search(query, maxResults);
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (final ScoreDoc score : scoreDocs) {
    final Document document = searcher.doc(score.doc);
    final String value = document.get("SF1"); // <-- This is the only needed field of result doc
    // collecting value ...
}

编辑:Lucene 4.1 Java-API

1 个答案:

答案 0 :(得分:2)

IndexReaderIndexSearcher都有方法.document(int docID, Set<String> fieldsToLoad),您可以在其中指定要加载的字段。

只需使用它并排除不必要的内容。