【问题标题】:Pagination not working while querying multiple solr collecections查询多个 solr 集合时分页不起作用
【发布时间】:2017-11-22 13:32:20
【问题描述】:

我有两个集合 mdsearch_veevavault 和 mdsearch_hema

http://rldata:8983/solr/mdsearch_veevavault_shard1_replica1/select?q=%3A&fl=id,desc1&wt=json&indent=true&collection=mdsearch_veevavault,mdsearch_hema&sort=titlesort%20desc,%20id%20asc

当我查询时没有给出开始和返回的行数:

{
  "responseHeader":{
    "status":0,
    "QTime":5,
    "params":{
      "q":"*:*",
      "indent":"true",
      "fl":"id,desc1",
      "collection":"mdsearch_veevavault,mdsearch_hema",
      "sort":"titlesort desc, id asc",
      "wt":"json"}},
  "response":{"numFound":6963,"start":0,"docs":[
      {

}
它给了我 6963 个结果,这是正确的

http://rldata:8983/solr/mdsearch_veevavault_shard1_replica1/select?q=%3A&fl=id,desc1&wt=json&indent=true&collection=mdsearch_veevavault,mdsearch_hema&sort=titlesort%20desc,%20id%20asc&rows=25&start=300

-> 现在我将添加开始和行数条件 start = 300 和 rows = 25

{
  "responseHeader":{
    "status":0,
    "QTime":22,
    "params":{
      "q":"*:*",
      "indent":"true",
      "fl":"id,desc1",
      "start":"300",
      "collection":"mdsearch_veevavault,mdsearch_hema",
      "sort":"titlesort desc, id asc",
      "rows":"25",
      "wt":"json"}},
  "response":{"numFound":6960,"start":300,"docs":[
      {}

现在找到的记录数减少了6960 ,谁能帮我理解是什么原因造成的? 我假设当我们更改启动参数时 numFound 将保持不变,当我每次更改启动参数时都会看到这种变化

【问题讨论】:

  • 集合之间会不会有重复的ID?由于 Solr 不需要查看比 start + rows 更远的 id,因此它们永远不会被比较。当它们被检索到时,突然实际上读取了重复的内容..
  • 谢谢 .. .. 成功了

标签: solr solr4 solrcloud solr-query-syntax


【解决方案1】:

我的猜测是,这是由于两个集合中的记录的重复 ID 造成的。当 Solr 将它们合并为一个结果时,id 应该是唯一的 - 因为这就是 Solr 知道文档不同的方式。

发生这种情况的原因是 Solr 仅从每个分片/副本返回足够的文档来满足请求的文档的 start+rows 数,因此对于第一个请求,每个服务器返回 10 个文档以及总数与查询匹配的文档。然后将这些计数与文档列表一起在响应请求的服务器上合并。

在这种情况下,Solr 不会知道在剩余的文档集中,有 n 个重叠的 id。但是,当您实际上对结果集进行了足够多的分页时,Solr 将查看从分片返回的所有结果集中的这些 id,并查看是否存在重复的 id - 然后将它们从总数中删除。

您可以通过为每个 id 引入特定于集合的参数来解决此问题(即 collectionname_idvalue 作为 id 中的实际值),除非您对合并这些结果感到满意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2018-03-18
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多