У кого-то есть идея, как загружать поля, ленивые от поисковика 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
Привет, спасибо за ваш быстрый ответ! Я попробую это и сообщит результаты. На данный момент я могу сказать, что потребление памяти выглядит так высоко, как было раньше (без набора полей). Знаете ли вы, если lucene внутри может загружать все поля здесь: 'TopDocs hits = searcher.search (query, maxResults);' – user3244938
'TopDocs', если я правильно помню, содержит только массив со ссылками на документы в индексе и ничего больше , – mindas
Назад снова! Просто сравнили некоторые запросы с полямиToLoad и без них. Подключен к jconsole к моей программе, нет никакой разницы между ними в потреблении ОЗУ. Я экспериментировал с индексами IndexSearcher.search' и 'IndexSearcher.searchAfter' для загрузки результатов пошагово. Но это резко снижает скорость. – user3244938