我有两个集合mdsearch_veevavault和mdsearch_hema
http://rldata:8983/solr/mdsearch_veevavault_shard1_replica1/select?q= %3A &安培; FL = ID,DESC1&安培;重量= JSON&安培;缩进=真安培;采集= mdsearch_veevavault,mdsearch_hema&安培;排序= titlesort%20desc,%20id%20asc < / p>
当我在没有给出开始和它返回的行数的情况下查询时:
{
"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":[
{
}
http://rldata:8983/solr/mdsearch_veevavault_shard1_replica1/select?q= %3A &安培; FL = ID,DESC1&安培;重量= JSON&安培;缩进=真安培;采集= mdsearch_veevavault,mdsearch_hema&安培;排序= titlesort%20desc,%20id%20asc&安培;行数= 25安培;起始= 300
- &GT;现在我将添加开始和行数条件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将保持不变,我每次更改启动参数时都会看到这种变化
答案 0 :(得分:1)
我的猜测是,这会导致两个集合中记录的重复ID。当Solr将它们合并为一个结果时,id应该是唯一的 - 因为Solr知道文档是不同的。
发生这种情况的原因是Solr只从每个分片/副本返回足够的文档以满足所请求文档的起始行数,因此对于第一个请求,每个服务器返回10个文档以及总计数与查询匹配的文档。然后在回答请求的服务器上合并这些计数以及文档列表。
在这种情况下,Solr不知道在剩余的文档集中,有n个重叠ID。但是当你实际上在结果集中分页足够远时,Solr会查看从分片返回的所有结果集中的那些ID,并看到有重复的ID - 然后从总计数中删除这些ID。 / p>
您可以通过为每个ID引入一个特定于集合的参数(即collectionname_idvalue
作为id
中的实际值)来解决此问题,除非您对这些结果合并感到满意。