2011-07-13 13 views
3

私は文書の束とlucene.netインデックスを得ました。これらをMVCリクエストでプルし、JSONとしてクライアントに返します。私が望むインデックスから始まる上位N個のドキュメントのみを返したい。サーバーとクライアントの間のデータフローを最小限に抑えるために、私はそれが必要です。 私が必要とするようなものである。まず、トップ20のドキュメントLucene.net検索範囲 - ページング

2をゲットquery-)

1)2番目のクエリ - 20から始まる上位20ドキュメントを取得 - 21だろう - 41

3)。 ...など。

Luceneではトップアイテムを設定できます。しかし、それはインデックスから最初から数えているだけです。それのための開始インデックスを設定するビルドイン可能性はありますか?おそらく、いくつかの高度なインデクサー私はlucene.netや何かに行方不明です。

ありがとう!

答えて

5

pagination in luceneを説明するこのブログをご覧ください。素晴らしいことだそれ

int start = 20; int pageSize = 20; 
Query query = qp.parse(searchTerm); 
TopDocs hits = searcher.search(query, maxNumberOfResults); 
for (int i = start; i < start + pageSize && i < hits.Length(); i++) { 
    int docId = hits.scoreDocs[i].doc; 
} 
+1

それの核心はこれです。 searcher.search(...)メソッドが実際にドキュメントを取得しないという事実は私には分かりませんでした。したがって、検索後のページングを簡単に作成できます。ありがとう! – chaZm