1 40 package com.mvnforum.search; 41 42 import java.io.IOException ; 43 import java.util.BitSet ; 44 45 import org.apache.lucene.index.IndexReader; 46 import org.apache.lucene.search.Filter; 47 48 51 public class CombineFilter extends Filter { 52 53 private Filter leftFilter; 54 55 private Filter rightFilter; 56 57 public CombineFilter(Filter f1, Filter f2) { 58 if ((f1 == null) && (f2 == null)) { 59 throw new IllegalArgumentException ("At least f1 or f2 must not be null."); 60 } 61 leftFilter = f1; 62 rightFilter = f2; 63 } 64 65 public BitSet bits(IndexReader reader) throws IOException { 66 67 BitSet resultBits = null; 68 if ((leftFilter != null) && (rightFilter != null)) { 69 BitSet leftBits = leftFilter.bits(reader); 70 BitSet rightBits = rightFilter.bits(reader); 71 resultBits = (BitSet ) leftBits.clone(); 72 resultBits.and(rightBits); 73 } else if (leftFilter != null) { 74 resultBits = leftFilter.bits(reader); 75 } else if (rightFilter != null) { 76 resultBits = rightFilter.bits(reader); 77 } else { 78 throw new IllegalArgumentException ("At least f1 or f2 must not be null."); 80 } 81 return resultBits; 82 } 83 84 public String toString() { 85 StringBuffer buffer = new StringBuffer (); 86 buffer.append(leftFilter); 87 buffer.append("\n"); 88 buffer.append(rightFilter); 89 return buffer.toString(); 90 } 91 } 92 | Popular Tags |