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