4

.netアプリケーションの1つにSolr検索を実装しました。Solrの検索機能を使おうとすると、100を超えるドキュメントのインデックスが作成されているのに、10件の結果しか返されないことを除いて、すべて正常に機能しています。この問題を解決するにはどうすればよいですか?

示すいくつかの例は次のとおりです。

http://117.55.242.204:8983/solr/select/?q=:&start = 0&rows = 10

10行を返します。

http://117.55.242.204:8983/solr/select/?q= &start = 20&rows = 30

0行を返しますが、numFound10行を表示します。

4

3 に答える 3

3

ここでは、との2つの変数に注意を払う必要がstartありrowsます。

前者の場合、は10であるため、10個のドキュメントのみを返します。2番目のケースでは、ドキュメント21から30( 20であり10)rowsを返そうとしますが、一致するドキュメントは10個しかないため、ゼロを返します。startrows

すべてのドキュメントを返す場合は、rows1000や10000などの高い値、またはインデックス内のドキュメントの数に設定します。ページングしていない場合はstart、0に設定されていることを確認してください。

于 2012-05-08T05:24:15.653 に答える
2

@Ansariが彼の回答で述べたように、Solrクエリにパラメータをstart渡す必要があります。rowsSolrNetクライアントを使用してこれを容易にするには、アプリケーションでこれらをクエリオプションとして設定する必要があります。これは、 SolrNetのクエリドキュメントのページネーションセクションのサンプルコードです。

 ISolrOperations<Product> solr = ...
 solr.Query("somequery", new QueryOptions{
   Start = 10,
   Rows = 25
 });

したがって、この例では、35を超える結果が見つかると想定しており、10番目のアイテムから開始して25個のアイテムを返すことを示しています。したがって、これはクエリで見つかった合計アイテムのアイテム10〜35を返します。

于 2012-05-08T12:50:34.537 に答える
1

アンサリの答えには同意しますが、コメントが1つあります。ページ付けはsolrを使用するための自然で直感的な方法であるため、単純に行をわいせつな数に設定することはできません。

それがパフォーマンスに敏感な操作または論理的な操作でさえあれば、すべてのドキュメントを返す簡単な方法があります。そのようなものが存在しないという事実は、これは、大きなデータセットを返すのではなく、短い反復ページネーションが進むべき道であることを意味します。

于 2012-12-02T21:28:51.817 に答える