java - Solr/Solrj 分页

标签 java solr lucene solrj

我在我创建的网络应用程序中使用 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/

相关文章:

java - 备份变量

java - 想要使用 float 操作按钮将项目添加到 ViewPager2 中包含的特定 fragment 中的回收 View

solr - Solr 的 MoreLikeThis 组件如何在内部工作以获得结果?

java - 无法创建 solr 核心

java - 标准分析器 - Apache Lucene

java - 如何在 Java 中将锯齿状数组解析为单个变量?

java - 为什么 java 允许总是抛出异常的方法将返回类型声明为该异常?

lucene - Nutch - 如何通过小块爬行?

SOLR 多值字段

lucene - solr搜索结果中字段值为1或true