2014-01-28 5 views
0

У кого-то есть идея, как загружать поля, ленивые от поисковика lucene? я не понимаю ...Lucene - ленивые поля загрузки из документов

Документов Моего Lucene индексирования содержит поле, как это:

  • UF1: UnStored поле 1
  • UF2: UnStored поле 2
  • ... Некоторые другие UnStored Поля
  • SF1 - Сохраненная Field 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

ответ

2

Оба IndexReader и IndexSearcher есть метод .document(int docID, Set<String> fieldsToLoad), где вы можете указать, какие поля вы хотите загрузить.

Просто используйте это и исключите то, что не нужно.

+0

Привет, спасибо за ваш быстрый ответ! Я попробую это и сообщит результаты. На данный момент я могу сказать, что потребление памяти выглядит так высоко, как было раньше (без набора полей). Знаете ли вы, если lucene внутри может загружать все поля здесь: 'TopDocs hits = searcher.search (query, maxResults);' – user3244938

+0

'TopDocs', если я правильно помню, содержит только массив со ссылками на документы в индексе и ничего больше , – mindas

+0

Назад снова! Просто сравнили некоторые запросы с полямиToLoad и без них. Подключен к jconsole к моей программе, нет никакой разницы между ними в потреблении ОЗУ. Я экспериментировал с индексами IndexSearcher.search' и 'IndexSearcher.searchAfter' для загрузки результатов пошагово. Но это резко снижает скорость. – user3244938

Смежные вопросы