From 2dd92fc0521f32b60e05ad83a80a4b3f4e88e3ce Mon Sep 17 00:00:00 2001 From: David Smiley Date: Tue, 28 Apr 2020 17:32:27 -0400 Subject: [PATCH] Solr GraphTermsQParser simplifications (#1405) No WeightOrDocIdSet; no override of bulkScorer (needless) --- .../solr/search/GraphTermsQParserPlugin.java | 96 +++++-------------- 1 file changed, 22 insertions(+), 74 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java index 03fcb02590e..c66e079170d 100644 --- a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import org.apache.lucene.document.DoublePoint; import org.apache.lucene.document.FloatPoint; @@ -40,7 +41,6 @@ import org.apache.lucene.index.TermState; import org.apache.lucene.index.TermStates; import org.apache.lucene.index.Terms; import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.BulkScorer; import org.apache.lucene.search.ConstantScoreQuery; import org.apache.lucene.search.ConstantScoreScorer; import org.apache.lucene.search.ConstantScoreWeight; @@ -56,7 +56,6 @@ import org.apache.lucene.search.Scorer; import org.apache.lucene.search.Weight; import org.apache.lucene.util.Accountable; import org.apache.lucene.util.ArrayUtil; -import org.apache.lucene.util.BitDocIdSet; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.BytesRefBuilder; import org.apache.lucene.util.BytesRefIterator; @@ -74,8 +73,7 @@ import org.apache.solr.schema.SchemaField; * This allows graph traversals to skip traversing high frequency nodes which is often desirable from a performance standpoint. * * Syntax: {!graphTerms f=field maxDocFreq=10000}term1,term2,term3 - **/ - + */ public class GraphTermsQParserPlugin extends QParserPlugin { public static final String NAME = "graphTerms"; @@ -227,17 +225,7 @@ public class GraphTermsQParserPlugin extends QParserPlugin { @Override public String toString(String defaultField) { - StringBuilder builder = new StringBuilder(); - boolean first = true; - for (Term term : this.queryTerms) { - if (!first) { - builder.append(','); - } - first = false; - builder.append(term.toString()); - } - - return builder.toString(); + return Arrays.stream(this.queryTerms).map(Term::toString).collect(Collectors.joining(",")); } @Override @@ -245,39 +233,32 @@ public class GraphTermsQParserPlugin extends QParserPlugin { visitor.visitLeaf(this); } - private class WeightOrDocIdSet { - final Weight weight; - final DocIdSet set; - - WeightOrDocIdSet(DocIdSet bitset) { - this.set = bitset; - this.weight = null; - } - } - @Override public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException { - List finalContexts = new ArrayList(); - List finalTerms = new ArrayList(); - List contexts = searcher.getTopReaderContext().leaves(); - TermStates[] termStates = new TermStates[this.queryTerms.length]; - collectTermStates(searcher.getIndexReader(), contexts, termStates, this.queryTerms); - for(int i=0; i finalContexts = new ArrayList<>(); + List finalTerms = new ArrayList<>(); + { + List contexts = searcher.getTopReaderContext().leaves(); + TermStates[] termStates = new TermStates[this.queryTerms.length]; + collectTermStates(searcher.getIndexReader(), contexts, termStates, this.queryTerms); + for(int i=0; i