Index: src/java/org/apache/lucene/queryParser/QueryParser.java =================================================================== --- src/java/org/apache/lucene/queryParser/QueryParser.java (revision 153087) +++ src/java/org/apache/lucene/queryParser/QueryParser.java (working copy) @@ -393,7 +393,7 @@ if (severalTokensAtSamePosition) { if (positionCount == 1) { // no phrase query: - BooleanQuery q = new BooleanQuery(); + BooleanQuery q = new BooleanQuery(true); for (int i = 0; i < v.size(); i++) { t = (org.apache.lucene.analysis.Token) v.elementAt(i); TermQuery currentQuery = new TermQuery( Index: src/java/org/apache/lucene/queryParser/QueryParser.jj =================================================================== --- src/java/org/apache/lucene/queryParser/QueryParser.jj (revision 153087) +++ src/java/org/apache/lucene/queryParser/QueryParser.jj (working copy) @@ -416,7 +416,7 @@ if (severalTokensAtSamePosition) { if (positionCount == 1) { // no phrase query: - BooleanQuery q = new BooleanQuery(); + BooleanQuery q = new BooleanQuery(true); for (int i = 0; i < v.size(); i++) { t = (org.apache.lucene.analysis.Token) v.elementAt(i); TermQuery currentQuery = new TermQuery( Index: src/java/org/apache/lucene/search/MultiTermQuery.java =================================================================== --- src/java/org/apache/lucene/search/MultiTermQuery.java (revision 153087) +++ src/java/org/apache/lucene/search/MultiTermQuery.java (working copy) @@ -51,7 +51,7 @@ public Query rewrite(IndexReader reader) throws IOException { FilteredTermEnum enumerator = getEnum(reader); - BooleanQuery query = new BooleanQuery(); + BooleanQuery query = new BooleanQuery(true); try { do { Term t = enumerator.term(); Index: src/java/org/apache/lucene/search/FuzzyQuery.java =================================================================== --- src/java/org/apache/lucene/search/FuzzyQuery.java (revision 153087) +++ src/java/org/apache/lucene/search/FuzzyQuery.java (working copy) @@ -122,7 +122,7 @@ enumerator.close(); } - BooleanQuery query = new BooleanQuery(); + BooleanQuery query = new BooleanQuery(true); int size = stQueue.size(); for(int i = 0; i < size; i++){ ScoreTerm st = (ScoreTerm) stQueue.pop(); Index: src/java/org/apache/lucene/search/SimilarityDelegator.java =================================================================== --- src/java/org/apache/lucene/search/SimilarityDelegator.java (revision 0) +++ src/java/org/apache/lucene/search/SimilarityDelegator.java (revision 0) @@ -0,0 +1,58 @@ +package org.apache.lucene.search; + +/** + * Copyright 2005 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** Expert: Delegating scoring implementation. Useful in {@link + * Query#getSimilarity(Searcher) implementations, to override only certain + * methods of a Searcher's Similiarty implementation.. */ +public class SimilarityDelegator extends Similarity { + + private Similarity delegee; + + /** Construct a {@link Similiarity} that delegates all methods to another. + * + * @param delegee the Similarity implementation to delegate to + */ + public SimilarityDelegator(Similarity delegee) { + this.delegee = delegee; + } + + public float lengthNorm(String fieldName, int numTerms) { + return delegee.lengthNorm(fieldName, numTerms); + } + + public float queryNorm(float sumOfSquaredWeights) { + return delegee.queryNorm(sumOfSquaredWeights); + } + + public float tf(float freq) { + return delegee.tf(freq); + } + + public float sloppyFreq(int distance) { + return delegee.sloppyFreq(distance); + } + + public float idf(int docFreq, int numDocs) { + return delegee.idf(docFreq, numDocs); + } + + public float coord(int overlap, int maxOverlap) { + return delegee.coord(overlap, maxOverlap); + } + +} Index: src/java/org/apache/lucene/search/RangeQuery.java =================================================================== --- src/java/org/apache/lucene/search/RangeQuery.java (revision 153087) +++ src/java/org/apache/lucene/search/RangeQuery.java (working copy) @@ -64,7 +64,7 @@ public Query rewrite(IndexReader reader) throws IOException { - BooleanQuery query = new BooleanQuery(); + BooleanQuery query = new BooleanQuery(true); TermEnum enumerator = reader.terms(lowerTerm); try { Index: src/java/org/apache/lucene/search/MultiPhraseQuery.java =================================================================== --- src/java/org/apache/lucene/search/MultiPhraseQuery.java (revision 153087) +++ src/java/org/apache/lucene/search/MultiPhraseQuery.java (working copy) @@ -228,7 +228,7 @@ public Query rewrite(IndexReader reader) { if (termArrays.size() == 1) { // optimize one-term case Term[] terms = (Term[])termArrays.get(0); - BooleanQuery boq = new BooleanQuery(); + BooleanQuery boq = new BooleanQuery(true); for (int i=0; i *
  • required which means that documents which do not Index: src/java/org/apache/lucene/search/Query.java =================================================================== --- src/java/org/apache/lucene/search/Query.java (revision 153087) +++ src/java/org/apache/lucene/search/Query.java (working copy) @@ -125,7 +125,9 @@ } } - BooleanQuery result = new BooleanQuery(); + boolean coordDisabled = + queries.length==0? false : ((BooleanQuery)queries[0]).isCoordDisabled(); + BooleanQuery result = new BooleanQuery(coordDisabled); Iterator i = allClauses.iterator(); while (i.hasNext()) { result.add((BooleanClause)i.next()); Index: src/java/org/apache/lucene/search/PhrasePrefixQuery.java =================================================================== --- src/java/org/apache/lucene/search/PhrasePrefixQuery.java (revision 153087) +++ src/java/org/apache/lucene/search/PhrasePrefixQuery.java (working copy) @@ -229,7 +229,7 @@ protected Weight createWeight(Searcher searcher) { if (termArrays.size() == 1) { // optimize one-term case Term[] terms = (Term[])termArrays.get(0); - BooleanQuery boq = new BooleanQuery(); + BooleanQuery boq = new BooleanQuery(true); for (int i=0; i