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

svn commit: r1709903 - /lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java

Author: yonik
Date: Wed Oct 21 19:27:15 2015
New Revision: 1709903

URL: http://svn.apache.org/viewvc?rev=1709903&view=rev
Log:
SOLR-8164: fix debug query string repr

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java?rev=1709903&r1=1709902&r2=1709903&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/QueryParsing.java Wed Oct 21 19:27:15 2015
@@ -425,18 +425,14 @@ public class QueryParsing {
     }
   }
 
+
+  private static int FLAG_BOOSTED=0x01;
+  private static int FLAG_IS_CLAUSE=0x02;
   /**
    * @see #toString(Query,IndexSchema)
    */
   public static void toString(Query query, IndexSchema schema, Appendable out, int flags) throws IOException {
-    boolean writeBoost = true;
-
-    float boost = 1f;
-    if (query instanceof BoostQuery) {
-      BoostQuery bq = (BoostQuery) query;
-      query = bq.getQuery();
-      boost = bq.getBoost();
-    }
+    int subflag = flags & ~(FLAG_BOOSTED|FLAG_IS_CLAUSE);  // clear the boosted / is clause flags for recursion
 
     if (query instanceof TermQuery) {
       TermQuery q = (TermQuery) query;
@@ -491,7 +487,7 @@ public class QueryParsing {
       BooleanQuery q = (BooleanQuery) query;
       boolean needParens = false;
 
-      if (q.getMinimumNumberShouldMatch() != 0 || q.isCoordDisabled()) {
+      if (q.getMinimumNumberShouldMatch() != 0 || q.isCoordDisabled() || (flags & (FLAG_IS_CLAUSE | FLAG_BOOSTED)) != 0 ) {
         needParens = true;
       }
       if (needParens) {
@@ -523,7 +519,7 @@ public class QueryParsing {
           out.append('(');
         }
 
-        toString(subQuery, schema, out, flags);
+        toString(subQuery, schema, out, subflag | FLAG_IS_CLAUSE);
 
         if (wrapQuery) {
           out.append(')');
@@ -549,29 +545,24 @@ public class QueryParsing {
       out.append('*');
     } else if (query instanceof WildcardQuery) {
       out.append(query.toString());
-      writeBoost = false;
     } else if (query instanceof FuzzyQuery) {
       out.append(query.toString());
-      writeBoost = false;
     } else if (query instanceof ConstantScoreQuery) {
       out.append(query.toString());
-      writeBoost = false;
     } else if (query instanceof WrappedQuery) {
       WrappedQuery q = (WrappedQuery)query;
       out.append(q.getOptions());
-      toString(q.getWrappedQuery(), schema, out, flags);
-      writeBoost = false; // we don't use the boost on wrapped queries
-    } else {
+      toString(q.getWrappedQuery(), schema, out, subflag);
+    } else if (query instanceof BoostQuery) {
+      BoostQuery q = (BoostQuery)query;
+      toString(q.getQuery(), schema, out, subflag | FLAG_BOOSTED);
+      out.append("^");
+      out.append(Float.toString(q.getBoost()));
+    }
+    else {
       out.append(query.getClass().getSimpleName()
               + '(' + query.toString() + ')');
-      writeBoost = false;
     }
-
-    if (writeBoost && boost != 1.0f) {
-      out.append("^");
-      out.append(Float.toString(boost));
-    }
-
   }
 
   /**