Hi,

we are currently testing Solr 9.7 and experiencing an error we have not seen 
before with SolR 9.6.1 and we think the problem might occur in the underlying 
lucene code basis:

ERROR o.a.s.h.RequestHandlerBase Server exception =>
at 
org.apache.lucene.search.TopFieldCollector.populateScores(TopFieldCollector.java:478)
java.lang.IllegalArgumentException: Doc id 48567944 doesn't match the query
at 
org.apache.lucene.search.TopFieldCollector.populateScores(TopFieldCollector.java:478)
 ~[?:?]
at 
org.apache.solr.search.SolrIndexSearcher.populateScoresIfNeeded(SolrIndexSearcher.java:1766)
 ~[?:?]
at 
org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1955)
 ~[?:?]
at 
org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1729)
 ~[?:?]
at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:726) 
~[?:?]
at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:721) 
~[?:?]
at 
org.apache.solr.handler.component.QueryComponent.doProcessUngroupedSearch(QueryComponent.java:1690)
 ~[?:?]
at 
org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:432)
 ~[?:?]
at 
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:456)
 ~[?:?]
at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:226)
 ~[?:?]

We index the embeddings as nested fields and can reproduce the error with the 
following code:

We are able to reproduce the error using the same query. It seems to occur in 
approximately 5% of all vector queries.
We have one server running Solr 9.7 and three servers running Solr 9.6.1, all 
working on the same frozen index.
Only the Solr 9.7 server encounters the issue. We can rule out Java 21 and the 
corresponding optimizations or the new multithreading parameter as the root 
cause of the problem.
The index contains the document referenced in the error message.


String q = "{!knn f=vector topK=20}[0.031046804...";
SolrQuery sq = new SolrQuery("{!cache=false}" + q);
sq.addField("score"); // no error without the score field
sq.setRows(14); // Defect document must be included in result
sq.setSort("ID", ORDER.asc); // Order is not important, but ID is. No error 
e.g. with score
final QueryRequest r = new QueryRequest(sq, METHOD.POST);
SolrClient solrClient = SolRConnector.createServer(server);
QueryResponse response = r.process(solrClient);

Is there any additional information we can provide to help resolve this error?

Best regards

Andreas Moll

Reply via email to