| diff --git a/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java b/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java |
| index 9335042..6b726e5 100644 |
| --- a/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java |
| +++ b/lucene/queries/src/java/org/apache/lucene/queries/TermsQuery.java |
| @@ -209,6 +209,11 @@ public class TermsQuery extends Query implements Accountable { |
| } |
| |
| @Override |
| + public int hashCode() { |
| + return super.hashCode() ^ this.hashCode; |
| + } |
| + |
| + @Override |
| public String toString(String defaultField) { |
| StringBuilder builder = new StringBuilder(); |
| BytesRef spare = new BytesRef(termsBytes); |
| diff --git a/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java b/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java |
| index 4d6434c..519bb98 100644 |
| --- a/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java |
| +++ b/lucene/queries/src/test/org/apache/lucene/queries/TermsQueryTest.java |
| @@ -166,6 +166,15 @@ public class TermsQueryTest extends LuceneTestCase { |
| assertFalse(right.equals(notEqual)); |
| } |
| } |
| + |
| + TermsQuery tq1 = new TermsQuery(new Term("thing", "apple")); |
| + TermsQuery tq2 = new TermsQuery(new Term("thing", "orange")); |
| + assertFalse(tq1.hashCode() == tq2.hashCode()); |
| + |
| + // different fields with the same term should have differing hashcodes |
| + tq1 = new TermsQuery(new Term("thing1", "apple")); |
| + tq2 = new TermsQuery(new Term("thing2", "apple")); |
| + assertFalse(tq1.hashCode() == tq2.hashCode()); |
| } |
| |
| public void testSingleFieldEquals() { |