2009-08-07 10 views
2

J'utilise Lucene .NET Disons que je veux seulement retourner 50 résultats à partir du résultat 100, comment puis-je faire à ce sujet? J'ai cherché les documents mais je ne trouve rien. Y a-t-il quelque chose qui me manque?Lucene .NET sous-ensembles de résultats

Répondre

1

Je suppose que vous faites cela pour les besoins de la radiomessagerie. La façon dont cela se fait normalement dans une implémentation Lucene (y compris Solr) consiste simplement à exécuter la requête normalement, mais en chargeant uniquement les données stockées pour les résultats qui vous intéressent.

Dans un scénario de recherche de personnes typique, cela peut signifier exécuter la même requête plusieurs fois, ce qui peut sembler une perte de ressources, mais avec l'aide du cache système et peut-être de la mise en cache de Lucene, ce n'est pas si grave. L'avantage est l'apatridie, ce qui vous permet d'évoluer.

5

Votre code devrait ressembler à ceci:

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 
} 

Ne pas utiliser la classe Hits. C'est inefficace et déconseillé.