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(");


Reply via email to