org.apache.lucene.search
public class: TermsFilter [javadoc |
source]
java.lang.Object
org.apache.lucene.search.Filter
org.apache.lucene.search.TermsFilter
All Implemented Interfaces:
Serializable
Constructs a filter for docs matching any of the terms added to this class.
Unlike a RangeFilter this can be used for filtering on multiple terms that are not necessarily in
a sequence. An example might be a collection of primary keys from a database query result or perhaps
a choice of "category" labels picked by the end user. As a filter, this is much faster than the
equivalent query (a BooleanQuery with many "should" TermQueries)
| Field Summary |
|---|
| ArrayList | termsList | |
| Methods from org.apache.lucene.search.Filter: |
|---|
|
bits |
| Method from org.apache.lucene.search.TermsFilter Detail: |
public void addTerm(Term term) {
termsList.add(term);
}
Adds a term to the list of acceptable terms |
public BitSet bits(IndexReader reader) throws IOException {
BitSet result=new BitSet(reader.maxDoc());
for (Iterator iter = termsList.iterator(); iter.hasNext();)
{
Term term = (Term) iter.next();
TermDocs td=reader.termDocs(term);
while (td.next())
{
result.set(td.doc());
}
}
return result;
}
|
public boolean equals(Object obj) {
if(this == obj)
return true;
if((obj == null) || (obj.getClass() != this.getClass()))
return false;
TermsFilter test = (TermsFilter)obj;
return (termsList == test.termsList||
(termsList!= null && termsList.equals(test.termsList)));
}
|
public int hashCode() {
int hash=9;
for (Iterator iter = termsList.iterator(); iter.hasNext();)
{
Term term = (Term) iter.next();
hash = 31 * hash + term.hashCode();
}
return hash;
}
|