Author: yonik
Date: Thu Aug 28 14:13:49 2008
New Revision: 689988

URL: http://svn.apache.org/viewvc?rev=689988&view=rev
Log:
SOLR-737: use a constant score query for wildcards

Added:
    
lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/WildcardFilter.java
      - copied unchanged from r689978, 
lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java
Modified:
    lucene/solr/branches/branch-1.3/CHANGES.txt
    
lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/SolrQueryParser.java
    
lucene/solr/branches/branch-1.3/src/test/org/apache/solr/ConvertedLegacyTest.java

Modified: lucene/solr/branches/branch-1.3/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/CHANGES.txt?rev=689988&r1=689987&r2=689988&view=diff
==============================================================================
--- lucene/solr/branches/branch-1.3/CHANGES.txt (original)
+++ lucene/solr/branches/branch-1.3/CHANGES.txt Thu Aug 28 14:13:49 2008
@@ -395,6 +395,10 @@
 
  3. SOLR-647: reference count the SolrCore uses to prevent a premature
     close while a core is still in use.  (Henri Biestro, Noble Paul, yonik)
+
+ 4. SOLR-737: SolrQueryParser now uses a ConstantScoreQuery for wildcard
+    queries that prevent an exception from being thrown when the number
+    of matching terms exceeds the BooleanQuery clause limit.  (yonik)
     
 Optimizations
  1. SOLR-276: improve JSON writer speed. (yonik)

Modified: 
lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/SolrQueryParser.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/SolrQueryParser.java?rev=689988&r1=689987&r2=689988&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/SolrQueryParser.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/src/java/org/apache/solr/search/SolrQueryParser.java
 Thu Aug 28 14:13:49 2008
@@ -22,6 +22,8 @@
 import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.search.ConstantScoreRangeQuery;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.WildcardQuery;
+import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.schema.FieldType;
@@ -144,4 +146,12 @@
     return new ConstantScorePrefixQuery(t);
   }
 
+  protected Query getWildcardQuery(String field, String termStr) throws 
ParseException {
+    Query q = super.getWildcardQuery(field, termStr);
+    if (q instanceof WildcardQuery) {
+      // use a constant score query to avoid overflowing clauses
+      return new ConstantScoreQuery(new 
WildcardFilter(((WildcardQuery)q).getTerm()));
+    }
+    return q;
+  }
 }

Modified: 
lucene/solr/branches/branch-1.3/src/test/org/apache/solr/ConvertedLegacyTest.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/branches/branch-1.3/src/test/org/apache/solr/ConvertedLegacyTest.java?rev=689988&r1=689987&r2=689988&view=diff
==============================================================================
--- 
lucene/solr/branches/branch-1.3/src/test/org/apache/solr/ConvertedLegacyTest.java
 (original)
+++ 
lucene/solr/branches/branch-1.3/src/test/org/apache/solr/ConvertedLegacyTest.java
 Thu Aug 28 14:13:49 2008
@@ -812,6 +812,9 @@
             );
     // val_s:* %//[EMAIL PROTECTED]"8"]
 
+    // test wildcard query
+    assertQ(req("val_s:a*p*") ,"//[EMAIL PROTECTED]'3']");
+    assertQ(req("val_s:p?a*") ,"//[EMAIL PROTECTED]'3']");
 
     assertU("<delete><query>id:[100 TO 110]</query></delete>");
 


Reply via email to