jpountz commented on code in PR #13454: URL: https://github.com/apache/lucene/pull/13454#discussion_r1627942880
########## lucene/core/src/java/org/apache/lucene/search/AbstractMultiTermQueryConstantScoreWrapper.java: ########## @@ -232,12 +221,24 @@ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOExcepti } final long cost = estimateCost(terms, q.getTermsCount()); + final int fieldDocCount = terms.getDocCount(); + final TermsEnum termsEnum = q.getTermsEnum(terms); + assert termsEnum != null; + + final List<TermAndState> collectedTerms = new ArrayList<>(); + Boolean collectResult = collectTerms(fieldDocCount, termsEnum, collectedTerms); + if (collectResult == null) { Review Comment: Could you do keep returning a primitive boolean and replace this with `if (collectResult && collectedTerms.isEmpty()) { return null; }`? ########## lucene/core/src/java/org/apache/lucene/search/AbstractMultiTermQueryConstantScoreWrapper.java: ########## @@ -153,39 +153,28 @@ protected abstract WeightOrDocIdSetIterator rewriteInner( List<TermAndState> collectedTerms) throws IOException; - private WeightOrDocIdSetIterator rewrite(LeafReaderContext context, Terms terms) Review Comment: I wonder if you could better encapsulate the change you're after by making this method return a `IOSupplier<WeightOrDocIdSetIterator>`, where `collectTerms` is called when retrieving the IOSupplier, but `rewriteInner` is called when calling `IOSupplier#get`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org