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尝试这个时,我得到了我想要的东西)
EDIT 我实际上发现它在以这种方式创建查询时有效:
SolrQuery query = new SolrQuery().setQuery(
"num:[20 TO 30]").setSortField("num", ORDER.desc).setRows(5);
答案 0 :(得分:3)
您可以更改requestHandler
的行为。默认情况下,它返回10行。将rows
中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中使用参数。