You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ho...@apache.org on 2007/05/08 20:15:50 UTC

svn commit: r536282 - in /lucene/solr/trunk: ./ src/java/org/apache/solr/request/ src/java/org/apache/solr/search/ src/java/org/apache/solr/util/ src/test/org/apache/solr/ src/test/org/apache/solr/search/ src/test/org/apache/solr/util/

Author: hossman
Date: Tue May  8 11:15:48 2007
New Revision: 536282

URL: http://svn.apache.org/viewvc?view=rev&rev=536282
Log:
SOLR-115 - minor optimization, replace uses of BooleanQuery.getClauses() with BooleanQuery.clauses()

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java
    lucene/solr/trunk/src/java/org/apache/solr/search/LuceneQueryOptimizer.java
    lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
    lucene/solr/trunk/src/java/org/apache/solr/search/QueryUtils.java
    lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java
    lucene/solr/trunk/src/test/org/apache/solr/BasicFunctionalityTest.java
    lucene/solr/trunk/src/test/org/apache/solr/search/TestQueryUtils.java
    lucene/solr/trunk/src/test/org/apache/solr/util/SolrPluginUtilsTest.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Tue May  8 11:15:48 2007
@@ -221,7 +221,12 @@
  1. SOLR-114: HashDocSet specific implementations of union() and andNot()
     for a 20x performance improvement for those set operations, and a new
     hash algorithm speeds up exists() by 10% and intersectionSize() by 8%.
-   (yonik)
+    (yonik)
+   
+ 2. SOLR-115: Solr now uses BooleanQuery.clauses() instead of
+    BooleanQuery.getClauses() in any situation where there is no risk of
+    modifying the original query.
+    (hossman)
 
 Bug Fixes
  1. SOLR-87: Parsing of synonym files did not correctly handle escaped

Modified: lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java Tue May  8 11:15:48 2007
@@ -275,8 +275,8 @@
             /* if the default boost was used, and we've got a BooleanQuery
              * extract the subqueries out and use them directly
              */
-            for (BooleanClause c : ((BooleanQuery)f).getClauses()) {
-              query.add(c);
+            for (Object c : ((BooleanQuery)f).clauses()) {
+              query.add((BooleanClause)c);
             }
           } else {
             query.add(f, BooleanClause.Occur.SHOULD);

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/LuceneQueryOptimizer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/LuceneQueryOptimizer.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/LuceneQueryOptimizer.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/LuceneQueryOptimizer.java Tue May  8 11:15:48 2007
@@ -24,6 +24,7 @@
 import org.apache.lucene.search.*;
 
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 import java.io.IOException;
 
@@ -64,9 +65,7 @@
     BooleanQuery query = new BooleanQuery();
     BooleanQuery filterQuery = null;
 
-    BooleanClause[] clauses = original.getClauses();
-    for (int i = 0; i < clauses.length; i++) {
-      BooleanClause c = clauses[i];
+    for (BooleanClause c : (List<BooleanClause>)original.clauses()) {
 
 /***
 System.out.println("required="+c.required);

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java Tue May  8 11:15:48 2007
@@ -304,9 +304,8 @@
       if (needParens) {
         out.append('(');
       }
-      BooleanClause[] clauses = q.getClauses();
       boolean first=true;
-      for (BooleanClause c : clauses) {
+      for (BooleanClause c : (List<BooleanClause>)q.clauses()) {
         if (!first) {
           out.append(' ');
         } else {

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/QueryUtils.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/QueryUtils.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/QueryUtils.java Tue May  8 11:15:48 2007
@@ -18,12 +18,9 @@
   static boolean isNegative(Query q) {
     if (!(q instanceof BooleanQuery)) return false;
     BooleanQuery bq = (BooleanQuery)q;
-    // TODO: use after next lucene update
-    //for (BooleanClause clause: (List <BooleanClause>)bq.clauses()) {
-    // if (bq.getClauses().size()==0) return false;
-    BooleanClause[] clauses = bq.getClauses();
-    if (clauses.length==0) return false;
-    for (BooleanClause clause: clauses) {
+    List<BooleanClause> clauses = bq.clauses();
+    if (clauses.size()==0) return false;
+    for (BooleanClause clause : clauses) {
       if (!clause.isProhibited()) return false;
     }
     return true;
@@ -43,17 +40,17 @@
     if (!(q instanceof BooleanQuery)) return q;
     BooleanQuery bq = (BooleanQuery)q;
 
-    BooleanClause[] clauses = bq.getClauses();
-    if (clauses.length==0) return q;
+    List<BooleanClause> clauses = bq.clauses();
+    if (clauses.size()==0) return q;
 
 
-    for (BooleanClause clause: clauses) {
+    for (BooleanClause clause : clauses) {
       if (!clause.isProhibited()) return q;
     }
 
-    if (clauses.length==1) {
+    if (clauses.size()==1) {
       // if only one clause, dispense with the wrapping BooleanQuery
-      Query negClause = clauses[0].getQuery();
+      Query negClause = clauses.get(0).getQuery();
       // we shouldn't need to worry about adjusting the boosts since the negative
       // clause would have never been selected in a positive query, and hence would
       // not contribute to a score.
@@ -64,7 +61,7 @@
       // ignore minNrShouldMatch... it doesn't make sense for a negative query
 
       // the inverse of -a -b is a OR b
-      for (BooleanClause clause: clauses) {
+      for (BooleanClause clause : clauses) {
         newBq.add(clause.getQuery(), BooleanClause.Occur.SHOULD);
       }
       return newBq;

Modified: lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java Tue May  8 11:15:48 2007
@@ -566,7 +566,7 @@
   public static void setMinShouldMatch(BooleanQuery q, String spec) {
 
     int optionalClauses = 0;
-    for (BooleanClause c : q.getClauses()) {
+    for (BooleanClause c : (List<BooleanClause>)q.clauses()) {
       if (c.getOccur() == Occur.SHOULD) {
         optionalClauses++;
       }
@@ -633,21 +633,20 @@
    */
   public static void flattenBooleanQuery(BooleanQuery to, BooleanQuery from) {
 
-    BooleanClause[] c = from.getClauses();
-    for (int i = 0; i < c.length; i++) {
+    for (BooleanClause clause : (List<BooleanClause>)from.clauses()) {
+      
+      Query cq = clause.getQuery();
+      cq.setBoost(cq.getBoost() * from.getBoost());
             
-      Query ci = c[i].getQuery();
-      ci.setBoost(ci.getBoost() * from.getBoost());
-            
-      if (ci instanceof BooleanQuery
-          && !c[i].isRequired()
-          && !c[i].isProhibited()) {
+      if (cq instanceof BooleanQuery
+          && !clause.isRequired()
+          && !clause.isProhibited()) {
                 
         /* we can recurse */
-        flattenBooleanQuery(to, (BooleanQuery)ci);
+        flattenBooleanQuery(to, (BooleanQuery)cq);
                 
       } else {
-        to.add(c[i]);
+        to.add(clause);
       }
     }
   }

Modified: lucene/solr/trunk/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/BasicFunctionalityTest.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/BasicFunctionalityTest.java Tue May  8 11:15:48 2007
@@ -281,7 +281,7 @@
                                       h.getCore().getSchema());
     assertTrue("not boolean?", q instanceof BooleanQuery);
     assertEquals("unexpected number of stemmed synonym tokens",
-                 2, ((BooleanQuery) q).getClauses().length);
+                 2, ((BooleanQuery) q).clauses().size());
   }
 
   

Modified: lucene/solr/trunk/src/test/org/apache/solr/search/TestQueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/search/TestQueryUtils.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/search/TestQueryUtils.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/search/TestQueryUtils.java Tue May  8 11:15:48 2007
@@ -8,6 +8,8 @@
 import org.apache.lucene.index.Term;
 import org.apache.solr.util.AbstractSolrTestCase;
 
+import java.util.List;
+
 /**
  * @author yonik
  * @version $Id$
@@ -27,9 +29,9 @@
   public void positive(Query q) {
     assertFalse(QueryUtils.isNegative(q));
     assertTrue(QueryUtils.getAbs(q)==q);
-    BooleanClause[] clauses = (q instanceof BooleanQuery) ? ((BooleanQuery)q).getClauses() : null;
+    List<BooleanClause> clauses = (q instanceof BooleanQuery) ? ((BooleanQuery)q).clauses() : null;
     if (clauses != null) {
-      if (clauses.length != 0) {
+      if (clauses.size() != 0) {
         assertTrue(QueryUtils.makeQueryable(q)==q);
       }
     } else {

Modified: lucene/solr/trunk/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/util/SolrPluginUtilsTest.java?view=diff&rev=536282&r1=536281&r2=536282
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/util/SolrPluginUtilsTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/util/SolrPluginUtilsTest.java Tue May  8 11:15:48 2007
@@ -186,14 +186,15 @@
                out instanceof BooleanQuery);
     {
       BooleanQuery bq = (BooleanQuery)out;
+      List<BooleanClause> clauses = bq.clauses();
       assertEquals(t+" wrong number of clauses", 2,
-                   bq.getClauses().length);
-      Query sub = bq.getClauses()[0].getQuery();
+                   clauses.size());
+      Query sub = clauses.get(0).getQuery();
       assertTrue(t+" first wasn't a DMQ:" + sub.getClass(),
                  sub instanceof DisjunctionMaxQuery);
       assertEquals(t+" first had wrong number of clauses", 4,
                    countItems(((DisjunctionMaxQuery)sub).iterator()));
-      sub = bq.getClauses()[1].getQuery();
+      sub = clauses.get(1).getQuery();
       assertTrue(t+" second wasn't a DMQ:" + sub.getClass(),
                  sub instanceof DisjunctionMaxQuery);
       assertEquals(t+" second had wrong number of clauses", 1,
@@ -208,14 +209,15 @@
                out instanceof BooleanQuery);
     {
       BooleanQuery bq = (BooleanQuery)out;
+      List<BooleanClause> clauses = bq.clauses();
       assertEquals(t+" wrong number of clauses", 2,
-                   bq.getClauses().length);
-      Query sub = bq.getClauses()[0].getQuery();
+                   clauses.size());
+      Query sub = clauses.get(0).getQuery();
       assertTrue(t+" first wasn't a DMQ:" + sub.getClass(),
                  sub instanceof DisjunctionMaxQuery);
       assertEquals(t+" first had wrong number of clauses", 4,
                    countItems(((DisjunctionMaxQuery)sub).iterator()));
-      sub = bq.getClauses()[1].getQuery();
+      sub = clauses.get(1).getQuery();
       assertTrue(t+" second wasn't a DMQ:" + sub.getClass(),
                  sub instanceof DisjunctionMaxQuery);
       assertEquals(t+" second had wrong number of clauses (stop words)", 2,