0
SolrQuery query = new SolrQuery();
query.setQuery("num:[20 TO 30]&fl=num&rows=50&start=10&sort=num desc");
QueryResponse rsp;
rsp = server.query(query);
SolrDocumentList returned = rsp.getResults();
System.out.println(returned.size());

なぜ私はいつも 10 個のドキュメントを取得するのですか?? (WebブラウザでGETを介してこれを試すと、必要なものが得られます)

編集私は実際に、クエリがこのように作成されたときに機能することを発見しました:

SolrQuery query = new SolrQuery().setQuery(
            "num:[20 TO 30]").setSortField("num", ORDER.desc).setRows(5);
4

1 に答える 1

3

の動作を変更できますrequestHandler。デフォルトでは、10行を返します。rowsinの設定defaultsを別の値に変更します。

<requestHandler name="..." class="...">

 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">text</str>
 </lst>

</requestHandler>

クライアント側では、探しているパラメータは次のrowsとおりです。...&start=0&rows=10...

編集

私が想定しているように、クライアントとしてsolrjを使用しています。の実装setQuery

public SolrQuery setQuery(String query) {
    this.set(CommonParams.Q, query); // whereas CommonParam.Q is 'q'
    return this;
}

これは、明示的に呼び出す必要がありsetRows、URLのようにパラメータを使用できないことを意味します。

于 2012-05-14T13:34:45.413 に答える