You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2007/04/30 09:56:45 UTC

svn commit: r533620 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene: DerefQuery.java RangeQuery.java WildcardQuery.java

Author: mreutegg
Date: Mon Apr 30 00:56:44 2007
New Revision: 533620

URL: http://svn.apache.org/viewvc?view=rev&rev=533620
Log:
JCR-893: More query classes with missing extractTerms()

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeQuery.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java?view=diff&rev=533620&r1=533619&r2=533620
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DerefQuery.java Mon Apr 30 00:56:44 2007
@@ -33,6 +33,7 @@
 import java.util.BitSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Implements a lucene <code>Query</code> which returns the nodes selected by
@@ -99,6 +100,13 @@
      */
     public String toString(String field) {
         return "DerefQuery";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void extractTerms(Set terms) {
+        // no terms to extract
     }
 
     //-------------------< DerefWeight >------------------------------------

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeQuery.java?view=diff&rev=533620&r1=533619&r2=533620
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RangeQuery.java Mon Apr 30 00:56:44 2007
@@ -37,6 +37,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.HashMap;
+import java.util.Set;
 
 /**
  * Implements a variant of the lucene class {@link org.apache.lucene.search.RangeQuery}.
@@ -75,6 +76,12 @@
     private final int transform;
 
     /**
+     * The rewritten range query or <code>null</code> if the range spans more
+     * than {@link org.apache.lucene.search.BooleanQuery#maxClauseCount} terms.
+     */
+    private Query stdRangeQuery;
+
+    /**
      * Creates a new RangeQuery. The lower or the upper term may be
      * <code>null</code>, but not both!
      *
@@ -117,7 +124,8 @@
             Query stdRangeQueryImpl
                     = new org.apache.lucene.search.RangeQuery(lowerTerm, upperTerm, inclusive);
             try {
-                return stdRangeQueryImpl.rewrite(reader);
+                stdRangeQuery = stdRangeQueryImpl.rewrite(reader);
+                return stdRangeQuery;
             } catch (BooleanQuery.TooManyClauses e) {
                 log.debug("Too many terms to enumerate, using custom RangeQuery");
                 // failed, use own implementation
@@ -161,6 +169,15 @@
             buffer.append(Float.toString(getBoost()));
         }
         return buffer.toString();
+    }
+
+    /**
+     * {@inheritDoc}
+     */ 
+    public void extractTerms(Set terms) {
+        if (stdRangeQuery != null) {
+            stdRangeQuery.extractTerms(terms);
+        }
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java?view=diff&rev=533620&r1=533619&r2=533620
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/WildcardQuery.java Mon Apr 30 00:56:44 2007
@@ -36,6 +36,7 @@
 import java.util.BitSet;
 import java.util.Map;
 import java.util.HashMap;
+import java.util.Set;
 
 /**
  * Implements a wildcard query on a lucene field with an embedded property name
@@ -76,6 +77,12 @@
     private final int transform;
 
     /**
+     * The standard multi term query to execute wildcard queries. This is only
+     * set if the pattern matches less than {@link org.apache.lucene.search.BooleanQuery#maxClauseCount}.
+     */
+    private Query multiTermQuery;
+
+    /**
      * Creates a new <code>WildcardQuery</code>.
      *
      * @param field     the name of the field to search.
@@ -118,7 +125,8 @@
             }
         };
         try {
-            return stdWildcardQuery.rewrite(reader);
+            multiTermQuery = stdWildcardQuery.rewrite(reader);
+            return multiTermQuery;
         } catch (BooleanQuery.TooManyClauses e) {
             // MultiTermQuery not possible
             log.debug("Too many terms to enumerate, using custom WildcardQuery.");
@@ -144,6 +152,15 @@
      */
     public String toString(String field) {
         return propName + ":" + pattern;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void extractTerms(Set terms) {
+        if (multiTermQuery != null) {
+            multiTermQuery.extractTerms(terms);
+        }
     }
 
     /**