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}; $solrSort = ( $fdat{core} eq 'dbtr' ) ? "debtor_id+asc" : "id+asc"; $solrOptions = "/select?indent=on&rows=$getrows&sort=$solrSort&q="; $solrURI .= $solrOptions; $solrURI .= $query; $solrURI .= ( $prevCursor eq '' ) ? "&cursorMark=*\"": "&cursorMark=$cursor\""; print STDERR "solrURI '$solrURI'\n"; my $solrResponse = $ua->post( $solrURI ); my $decoded = decode_json( $solrResponse->{_content} ); my $numFound = $decoded->{response}{numFound}; foreach my $d ( $decoded->{response}{docs} ) { my @docs = @$d; print STDERR "size of docs '" . scalar( @docs ) . "'\n"; foreach my $r ( @docs ) { if ( $fdat{cust_num} and $fdat{core} eq 'dbtr' ) { push ( @solrResults, $r->{debtor_id} ); } elsif ( $fdat{cust_num} and $fdat{core} eq 'debt' ) { push ( @solrResults, $r->{debt_id} ); } } } $prevCursor = ( $prevCursor eq '' ) ? "*" : $cursor; $cursor = $decoded->{nextCursorMark}; print STDERR "cursor '$cursor'\n"; print STDERR "prevCursor '$prevCursor'\n"; print STDERR "size of solrResults '" . scalar( @solrResults ) . "'\n"; } print out: http://[SOLR URL]:8983/solr/debt/select?indent=on&rows=1000&sort=id+asc&q=debt_id: 608384 OR debt_id: 393291&cursorMark=AoEmMzkzMjkx The numFound: 35008 final size of solrResults: 22006 Am I missing something I should be using with cursorMark? Or is this expected? I've checked my logic, and I'm using the cursors the way this page is using them in examples: https://lucene.apache.org/solr/guide/6_6/pagination-of-results.html Thanks Rhys