blob: 5206f8a3dd030015d367e936ef21d5039a465205 [file] [log] [blame]
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() {