List of usage examples for org.apache.lucene.search MultiTermQuery MultiTermQuery
MultiTermQuery
From source file:org.exoplatform.services.jcr.impl.core.query.lucene.WildcardQuery.java
License:Apache License
/** * Either rewrites this query to a lucene MultiTermQuery or in case of * a TooManyClauses exception to a custom jackrabbit query implementation * that uses a BitSet to collect all hits. * * @param reader the index reader to use for the search. * @return the rewritten query.//from w ww.ja v a 2s . c om * @throws IOException if an error occurs while reading from the index. */ @Override public Query rewrite(IndexReader reader) throws IOException { Query stdWildcardQuery = new MultiTermQuery() { @Override protected FilteredTermEnum getEnum(IndexReader reader) throws IOException { return new WildcardTermEnum(reader, field, propName, pattern, transform); } /** Prints a user-readable version of this query. */ @Override public String toString(String field) { StringBuffer buffer = new StringBuffer(); buffer.append(field); buffer.append(':'); buffer.append(ToStringUtils.boost(getBoost())); return buffer.toString(); } }; try { multiTermQuery = stdWildcardQuery.rewrite(reader); return multiTermQuery; } catch (BooleanQuery.TooManyClauses e) { // MultiTermQuery not possible log.debug("Too many terms to enumerate, using custom WildcardQuery."); return this; } }