org.apache.lucene.search
abstract public class: MultiTermQuery [javadoc |
source]
java.lang.Object
org.apache.lucene.search.Query
org.apache.lucene.search.MultiTermQuery
All Implemented Interfaces:
Cloneable, Serializable
Direct Known Subclasses:
WildcardQuery, RegexQuery, FuzzyQuery
A
Query that matches documents containing a subset of terms provided
by a
FilteredTermEnum enumeration.
MultiTermQuery is not designed to be used by itself.
The reason being that it is not intialized with a FilteredTermEnum
enumeration. A FilteredTermEnum enumeration needs to be provided.
For example, WildcardQuery and FuzzyQuery extend
MultiTermQuery to provide WildcardTermEnum and
FuzzyTermEnum , respectively.
| Methods from org.apache.lucene.search.Query: |
|---|
|
clone, combine, createWeight, extractTerms, getBoost, getSimilarity, mergeBooleanQueries, rewrite, setBoost, toString, toString, weight |
| Method from org.apache.lucene.search.MultiTermQuery Detail: |
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MultiTermQuery)) return false;
final MultiTermQuery multiTermQuery = (MultiTermQuery) o;
if (!term.equals(multiTermQuery.term)) return false;
return getBoost() == multiTermQuery.getBoost();
}
|
abstract protected FilteredTermEnum getEnum(IndexReader reader) throws IOException
Construct the enumeration to be used, expanding the pattern term. |
public Term getTerm() {
return term;
}
Returns the pattern term. |
public int hashCode() {
return term.hashCode() + Float.floatToRawIntBits(getBoost());
}
|
public Query rewrite(IndexReader reader) throws IOException {
FilteredTermEnum enumerator = getEnum(reader);
BooleanQuery query = new BooleanQuery(true);
try {
do {
Term t = enumerator.term();
if (t != null) {
TermQuery tq = new TermQuery(t); // found a match
tq.setBoost(getBoost() * enumerator.difference()); // set the boost
query.add(tq, BooleanClause.Occur.SHOULD); // add to query
}
} while (enumerator.next());
} finally {
enumerator.close();
}
return query;
}
|
public String toString(String field) {
StringBuffer buffer = new StringBuffer();
if (!term.field().equals(field)) {
buffer.append(term.field());
buffer.append(":");
}
buffer.append(term.text());
buffer.append(ToStringUtils.boost(getBoost()));
return buffer.toString();
}
Prints a user-readable version of this query. |