You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/10/15 16:27:10 UTC

svn commit: r1708826 - in /lucene/dev/trunk/lucene: CHANGES.txt core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java

Author: jpountz
Date: Thu Oct 15 14:27:10 2015
New Revision: 1708826

URL: http://svn.apache.org/viewvc?rev=1708826&view=rev
Log:
LUCENE-6839: Make SpanOrQuery immutable.

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1708826&r1=1708825&r2=1708826&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Thu Oct 15 14:27:10 2015
@@ -111,6 +111,9 @@ API Changes
   order to let Lucene know that a Query should be used for filtering but not
   scoring.
 
+* LUCENE-6939: SpanOrQuery.addClause is now deprecated, clauses should all be
+  provided at construction time. (Paul Elschot via Adrien Grand)
+
 Optimizations
 
 * LUCENE-6708: TopFieldCollector does not compute the score several times on the

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java?rev=1708826&r1=1708825&r2=1708826&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java Thu Oct 15 14:27:10 2015
@@ -29,6 +29,8 @@ import org.apache.lucene.search.TopTerms
 
 import java.io.IOException;
 import java.util.Objects;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * Wraps any {@link MultiTermQuery} as a {@link SpanQuery}, 
@@ -156,14 +158,14 @@ public class SpanMultiTermQueryWrapper<Q
    * @see #setRewriteMethod
    */
   public final static SpanRewriteMethod SCORING_SPAN_QUERY_REWRITE = new SpanRewriteMethod() {
-    private final ScoringRewrite<SpanOrQuery> delegate = new ScoringRewrite<SpanOrQuery>() {
+    private final ScoringRewrite<List<SpanQuery>> delegate = new ScoringRewrite<List<SpanQuery>>() {
       @Override
-      protected SpanOrQuery getTopLevelBuilder() {
-        return new SpanOrQuery();
+      protected List<SpanQuery> getTopLevelBuilder() {
+        return new ArrayList<SpanQuery>();
       }
 
-      protected Query build(SpanOrQuery builder) {
-        return builder;
+      protected Query build(List<SpanQuery> builder) {
+        return new SpanOrQuery(builder.toArray(new SpanQuery[builder.size()]));
       }
 
       @Override
@@ -172,9 +174,9 @@ public class SpanMultiTermQueryWrapper<Q
       }
     
       @Override
-      protected void addClause(SpanOrQuery topLevel, Term term, int docCount, float boost, TermContext states) {
+      protected void addClause(List<SpanQuery> topLevel, Term term, int docCount, float boost, TermContext states) {
         final SpanTermQuery q = new SpanTermQuery(term, states);
-        topLevel.addClause(q);
+        topLevel.add(q);
       }
     };
     
@@ -196,33 +198,33 @@ public class SpanMultiTermQueryWrapper<Q
    * @see #setRewriteMethod
    */
   public static final class TopTermsSpanBooleanQueryRewrite extends SpanRewriteMethod  {
-    private final TopTermsRewrite<SpanOrQuery> delegate;
+    private final TopTermsRewrite<List<SpanQuery>> delegate;
   
     /** 
      * Create a TopTermsSpanBooleanQueryRewrite for 
      * at most <code>size</code> terms.
      */
     public TopTermsSpanBooleanQueryRewrite(int size) {
-      delegate = new TopTermsRewrite<SpanOrQuery>(size) {
+      delegate = new TopTermsRewrite<List<SpanQuery>>(size) {
         @Override
         protected int getMaxSize() {
           return Integer.MAX_VALUE;
         }
     
         @Override
-        protected SpanOrQuery getTopLevelBuilder() {
-          return new SpanOrQuery();
+        protected List<SpanQuery> getTopLevelBuilder() {
+          return new ArrayList<SpanQuery>();
         }
 
         @Override
-        protected Query build(SpanOrQuery builder) {
-          return builder;
+        protected Query build(List<SpanQuery> builder) {
+          return new SpanOrQuery(builder.toArray(new SpanQuery[builder.size()]));
         }
 
         @Override
-        protected void addClause(SpanOrQuery topLevel, Term term, int docFreq, float boost, TermContext states) {
+        protected void addClause(List<SpanQuery> topLevel, Term term, int docFreq, float boost, TermContext states) {
           final SpanTermQuery q = new SpanTermQuery(term, states);
-          topLevel.addClause(q);
+          topLevel.add(q);
         }
       };
     }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java?rev=1708826&r1=1708825&r2=1708826&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanOrQuery.java Thu Oct 15 14:27:10 2015
@@ -53,7 +53,7 @@ public final class SpanOrQuery extends S
   }
 
   /** Adds a clause to this query */
-  public final void addClause(SpanQuery clause) {
+  private final void addClause(SpanQuery clause) {
     if (field == null) {
       field = clause.getField();
     } else if (clause.getField() != null && !clause.getField().equals(field)) {