Index: CHANGES.txt =================================================================== --- CHANGES.txt (revision 883528) +++ CHANGES.txt (working copy) @@ -13,6 +13,10 @@ Bug fixes +* LUCENE-2092: BooleanQuery was ignoring disableCoord in its hashCode + and equals methods, cause bad things to happen when caching + BooleanQueries. (Chris Hostetter, Mike McCandless) + New features Optimizations Index: src/test/org/apache/lucene/search/TestWildcard.java =================================================================== --- src/test/org/apache/lucene/search/TestWildcard.java (revision 883528) +++ src/test/org/apache/lucene/search/TestWildcard.java (working copy) @@ -104,7 +104,7 @@ MultiTermQuery wq = new WildcardQuery(new Term("field", "")); wq.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); assertMatches(searcher, wq, 0); - BooleanQuery expected = new BooleanQuery(); + BooleanQuery expected = new BooleanQuery(true); assertEquals(searcher.rewrite(expected), searcher.rewrite(wq)); } Index: src/java/org/apache/lucene/search/BooleanQuery.java =================================================================== --- src/java/org/apache/lucene/search/BooleanQuery.java (revision 883528) +++ src/java/org/apache/lucene/search/BooleanQuery.java (working copy) @@ -469,14 +469,15 @@ BooleanQuery other = (BooleanQuery)o; return (this.getBoost() == other.getBoost()) && this.clauses.equals(other.clauses) - && this.getMinimumNumberShouldMatch() == other.getMinimumNumberShouldMatch(); + && this.getMinimumNumberShouldMatch() == other.getMinimumNumberShouldMatch() + && this.disableCoord == other.disableCoord; } /** Returns a hash code value for this object.*/ @Override public int hashCode() { return Float.floatToIntBits(getBoost()) ^ clauses.hashCode() - + getMinimumNumberShouldMatch(); + + getMinimumNumberShouldMatch() + (disableCoord ? 17:0); } } Index: tags/lucene_3_0_back_compat_tests_20091116/src/test/org/apache/lucene/search/TestWildcard.java =================================================================== --- tags/lucene_3_0_back_compat_tests_20091116/src/test/org/apache/lucene/search/TestWildcard.java (revision 883531) +++ tags/lucene_3_0_back_compat_tests_20091116/src/test/org/apache/lucene/search/TestWildcard.java (working copy) @@ -104,7 +104,7 @@ MultiTermQuery wq = new WildcardQuery(new Term("field", "")); wq.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); assertMatches(searcher, wq, 0); - BooleanQuery expected = new BooleanQuery(); + BooleanQuery expected = new BooleanQuery(true); assertEquals(searcher.rewrite(expected), searcher.rewrite(wq)); }