You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mv...@apache.org on 2013/01/27 21:14:02 UTC
svn commit: r1439166 - in /lucene/dev/trunk/lucene: CHANGES.txt
join/src/java/org/apache/lucene/search/join/JoinUtil.java
join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
join/src/java/org/apache/lucene/search/join/TermsQuery.java
Author: mvg
Date: Sun Jan 27 20:14:02 2013
New Revision: 1439166
URL: http://svn.apache.org/viewvc?rev=1439166&view=rev
Log:
LUCENE-4704: Make join queries override hashcode and equals methods.
Modified:
lucene/dev/trunk/lucene/CHANGES.txt
lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1439166&r1=1439165&r2=1439166&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Sun Jan 27 20:14:02 2013
@@ -104,6 +104,9 @@ Bug Fixes
degrees and barely any height, it would generate so many indexed terms
(> 500k) that it could even cause an OutOfMemoryError. Fixed. (David Smiley)
+* LUCENE-4704: Make join queries override hashcode and equals methods.
+ (Martijn van Groningen)
+
======================= Lucene 4.1.0 =======================
Changes in backwards compatibility policy
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java?rev=1439166&r1=1439165&r2=1439166&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java Sun Jan 27 20:14:02 2013
@@ -71,7 +71,7 @@ public final class JoinUtil {
case None:
TermsCollector termsCollector = TermsCollector.create(fromField, multipleValuesPerDocument);
fromSearcher.search(fromQuery, termsCollector);
- return new TermsQuery(toField, termsCollector.getCollectorTerms());
+ return new TermsQuery(toField, fromQuery, termsCollector.getCollectorTerms());
case Total:
case Max:
case Avg:
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java?rev=1439166&r1=1439165&r2=1439166&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java Sun Jan 27 20:14:02 2013
@@ -93,6 +93,35 @@ class TermsIncludingScoreQuery extends Q
}
@Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ } if (!super.equals(obj)) {
+ return false;
+ } if (getClass() != obj.getClass()) {
+ return false;
+ }
+
+ TermsIncludingScoreQuery other = (TermsIncludingScoreQuery) obj;
+ if (!field.equals(other.field)) {
+ return false;
+ }
+ if (!unwrittenOriginalQuery.equals(other.unwrittenOriginalQuery)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result += prime * field.hashCode();
+ result += prime * unwrittenOriginalQuery.hashCode();
+ return result;
+ }
+
+ @Override
public Weight createWeight(IndexSearcher searcher) throws IOException {
final Weight originalWeight = originalQuery.createWeight(searcher);
return new Weight() {
Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java?rev=1439166&r1=1439165&r2=1439166&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsQuery.java Sun Jan 27 20:14:02 2013
@@ -21,6 +21,7 @@ import org.apache.lucene.index.FilteredT
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.MultiTermQuery;
+import org.apache.lucene.search.Query;
import org.apache.lucene.util.AttributeSource;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefHash;
@@ -37,13 +38,15 @@ import java.util.Comparator;
class TermsQuery extends MultiTermQuery {
private final BytesRefHash terms;
+ private final Query fromQuery; // Used for equals() only
/**
* @param field The field that should contain terms that are specified in the previous parameter
* @param terms The terms that matching documents should have. The terms must be sorted by natural order.
*/
- TermsQuery(String field, BytesRefHash terms) {
+ TermsQuery(String field, Query fromQuery, BytesRefHash terms) {
super(field);
+ this.fromQuery = fromQuery;
this.terms = terms;
}
@@ -63,6 +66,31 @@ class TermsQuery extends MultiTermQuery
'}';
}
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ } if (!super.equals(obj)) {
+ return false;
+ } if (getClass() != obj.getClass()) {
+ return false;
+ }
+
+ TermsQuery other = (TermsQuery) obj;
+ if (!fromQuery.equals(other.fromQuery)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result += prime * fromQuery.hashCode();
+ return result;
+ }
+
static class SeekingTermSetTermsEnum extends FilteredTermsEnum {
private final BytesRefHash terms;