Подмножества результатов Lucene .NET - PullRequest
2 голосов
/ 07 августа 2009

Я использую Lucene .NET Допустим, я хочу вернуть только 50 результатов, начиная с результата 100, как я могу это сделать? Я искал документы, но ничего не нашел. Я что-то упускаю?

Ответы [ 2 ]

5 голосов
/ 07 августа 2009

Ваш код должен выглядеть примерно так:

TopDocs topDocs = indexSearcher.Search(query, null, 150);
for(int i=100, i<min(topDocs.totalHits,150); i++) {
    Document doc = indexSearcher.doc(topDocs.scoreDocs[i]);

    // Do something with the doc
}

Не используйте Hits класс. Это неэффективно и не рекомендуется.

1 голос
/ 07 августа 2009

Я предполагаю, что вы делаете это с целью подкачки. Обычно это делается в реализации Lucene (включая Solr), просто выполняя запрос в обычном режиме, а загружая только сохраненные данные для интересующих вас результатов.

В типичном сценарии подкачки это может означать выполнение одного и того же запроса несколько раз, что может показаться пустой тратой ресурсов, но с помощью системного кэша и, возможно, кэширования Lucene, это не так уж плохо. Преимущество - безгражданство, которое позволяет вам масштабироваться.

...