Author: yonik
Date: Fri Aug 29 09:54:41 2008
New Revision: 690332
URL: http://svn.apache.org/viewvc?rev=690332&view=rev
Log:
SOLR-737: fix filters equals/hashcode so they can be cached if used directly in
a non-rewritten query
Modified:
lucene/solr/trunk/src/java/org/apache/solr/search/PrefixFilter.java
lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/PrefixFilter.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/PrefixFilter.java?rev=690332&r1=690331&r2=690332&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/PrefixFilter.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/PrefixFilter.java Fri Aug
29 09:54:41 2008
@@ -18,10 +18,12 @@
package org.apache.solr.search;
import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.index.TermDocs;
+import org.apache.lucene.util.OpenBitSet;
import java.util.BitSet;
import java.io.IOException;
@@ -38,6 +40,7 @@
Term getPrefix() { return prefix; }
+ @Override
public BitSet bits(IndexReader reader) throws IOException {
final BitSet bitSet = new BitSet(reader.maxDoc());
new PrefixGenerator(prefix) {
@@ -47,6 +50,36 @@
}.generate(reader);
return bitSet;
}
+
+ @Override
+ public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
+ final OpenBitSet bitSet = new OpenBitSet(reader.maxDoc());
+ new PrefixGenerator(prefix) {
+ public void handleDoc(int doc) {
+ bitSet.set(doc);
+ }
+ }.generate(reader);
+ return bitSet;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof PrefixFilter &&
((PrefixFilter)o).prefix.equals(this.prefix);
+ }
+
+ @Override
+ public int hashCode() {
+ return 0xcecf7fe2 + prefix.hashCode();
+ }
+
+ @Override
+ public String toString () {
+ StringBuilder sb = new StringBuilder();
+ sb.append("PrefixFilter(");
+ sb.append(prefix.toString());
+ sb.append(")");
+ return sb.toString();
+ }
}
// keep this protected until I decide if it's a good way
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java?rev=690332&r1=690331&r2=690332&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/WildcardFilter.java Fri
Aug 29 09:54:41 2008
@@ -46,6 +46,7 @@
/**
* @deprecated Use [EMAIL PROTECTED] #getDocIdSet(IndexReader)} instead.
*/
+ @Override
public BitSet bits(IndexReader reader) throws IOException {
final BitSet bitSet = new BitSet(reader.maxDoc());
new WildcardGenerator(term) {
@@ -56,6 +57,7 @@
return bitSet;
}
+ @Override
public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
final OpenBitSet bitSet = new OpenBitSet(reader.maxDoc());
new WildcardGenerator(term) {
@@ -66,6 +68,17 @@
return bitSet;
}
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof WildcardFilter &&
((WildcardFilter)o).term.equals(this.term);
+ }
+
+ @Override
+ public int hashCode() {
+ return term.hashCode();
+ }
+
+ @Override
public String toString () {
StringBuilder sb = new StringBuilder();
sb.append("WildcardFilter(");