我在我创建的网络应用程序中使用 solr 和 solrj 来实现索引和搜索功能。我的请求处理程序在 solrconfig.xml 中配置如下:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="start">0</str>
<int name="rows">10</int>
<str name="defType">edismax</str>
<str name="qf">
title^10.0 subtitle^7.0 abstract^5.0 content^1.0 text^1.0
</str>
<str name="pf">
title^10.0 subtitle^7.0 abstract^5.0 content^1.0 text^1.0
</str>
<str name="df">text</str>
</lst>
</requestHandler>
就目前而言,索引和搜索效果很好。但是,我想实现分页。配置文件包含“开始”和“行”数据。但是,在 solrj 中,当我运行时:
SolrQuery query = new SolrQuery(searchTerm);
System.out.println(query.getRequestHandler());
System.out.println(query.getRows());
System.out.println(query.getStart());
三个打印语句均显示为空。我知道这些“gets”中的每一个都有一个对应的“set”,但我本以为它们已经通过 solrconfig.xml 中的响应处理程序进行了设置。有人可以告诉我吗?
最佳答案
在服务器上执行查询之前,客户端不会知道你在服务器端设置了什么,对吧?因此,它们都为空也就不足为奇了。
要实现分页,您需要来自客户端的两个参数 - 页码和每页的项目数。一旦你得到这两个,你就可以在客户端构建你的 SolrQuery,如下所示:
SolrQuery query = new SolrQuery(searchTerm);
query.setStart((pageNum - 1) * numItemsPerPage);
query.setRows(numItemsPerPage);
// execute the query on the server and get results
QueryResponse res = solrServer.query(solrQuery);
关于java - Solr/Solrj 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992296/