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>");