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 个文件?(当我在网络浏览器中通过 GET 尝试此操作时,我得到了我想要的)

编辑我实际上发现它在以这种方式创建查询时起作用:

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

1 回答 1

3

您可以更改requestHandler. 默认情况下,它返回 10 行。rows将in的设置更改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 回答