0
有人有一個想法,如何通過lucene搜索器加載字段lazy? 我不明白這一點...Lucene - 來自文檔的延遲加載字段
我的Lucene指數法的文檔中包含這樣的字段:
- UF1:保存字段1
- UF2:保存字段2
- ... :其他一些保存字段
- SF1 - 存儲字段1
- SF2 - 存儲字段2 - >但是,這其中有非常非常多的文字
所以現在我在索引上搜索。當我得到非常多的結果文檔時,似乎SF2中的所有內容都是由lucene加載的,所以RAM的上升速度非常快。 但是,我需要通過此搜索獲得的唯一字段是SF1。此搜索將永遠不會使用SF2。
是否有可能從beeing加載到生成的文檔中排除該特殊字段「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 ...
}
編輯:4.1的Lucene Java的API
嗨Mindas,感謝您的快速響應!我會嘗試並報告結果。現在我可以說,內存消耗看起來和以前一樣高(沒有字段集合)。你知道嗎,如果lucene內部可能在這裏加載所有字段:'TopDocs hits = searcher.search(query,maxResults);' – user3244938
'TopDocs',如果我沒有記錯的話,只包含數組引用索引中的文檔, 。 – mindas
回來了!只是比較了一些查詢與fieldsToLoad和沒有。與jconsole連接到我的程序中,它們在RAM消耗方面沒有任何區別。我嘗試使用「IndexSearcher.search」和「IndexSearcher.searchAfter」逐步加載結果。但那是急劇下降的速度。 – user3244938