Based on the info provided, it's hard to be certain, but reading between the lines here are hte assumptions i'm making...
1) your core name is "dbtr" 2) the uniqueId field for the "dbtr" core is "debtor_id" ..are those assumptions correct? Two key pieces of information that doesn't seem to be assumable from the imfo you've provided: a) What is the fieldType of the uniqueKey field in use? b) how are you determining that "The numFound: 35008" ... You show the code that prints out "size of solrResults: 22006" but nothing in your code ever prints $numFound. there is a snippet of code at the top of your perl logic that seems disconnected from the rest of the code which makes me think that before you do anything with a cursor you are already parsing some *other* query response to get $numFound that way... : i am using this logic in perl: : : my $decoded = decode_json( $solrResponse->{_content} ); : my $numFound = $decoded->{response}{numFound}; : : $cursor = "*"; : $prevCursor = ''; : : while ( $prevCursor ne $cursor ) : { : my $solrURI = "\"http://[SOLR URL]:8983/solr/"; : $solrURI .= $fdat{core}; ... ...what exactly does all the code *before* this look like? what is the request that you are using to get that initial '$solrResponse' that you are parsing to extract '$numFound' are you sure it's exactly the same as the query whose cursor you are iterating over? It looks like you are (also) extracting 'my $numFound = $decoded->{response}{numFound};' on every (cusor) request ... what do you get if add this to your cursor loop... print STDERR "numFound = $numFound at '$cursor'"; ...because unless documents are being added/deleted as you iterate over hte cursor, the numFound value should be consistent on each request. -Hoss http://www.lucidworks.com/