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,