/**
*
*/
package querqy.lucene.rewrite;
import java.io.IOException;
import org.apache.lucene.search.Query;
import querqy.lucene.rewrite.prms.PRMSQuery;
/**
* A LuceneQueryFactory that wraps a TermQueryFactory or the factory of a more complex
* query that results from Lucene analysis.
*
* @author rene
*
*/
public class TermSubQueryFactory implements LuceneQueryFactory<Query> {
final LuceneQueryFactory<?> root;
final FieldBoost boost;
public final PRMSQuery prmsQuery;
public TermSubQueryFactory(LuceneQueryFactoryAndPRMSQuery rootAndPrmsQuery, FieldBoost boost) {
this(rootAndPrmsQuery.queryFactory, rootAndPrmsQuery.prmsQuery, boost);
}
public TermSubQueryFactory(LuceneQueryFactory<?> root, PRMSQuery prmsQuery, FieldBoost boost) {
this.root = root;
this.boost = boost;
this.prmsQuery = prmsQuery;
}
@Override
public void prepareDocumentFrequencyCorrection(DocumentFrequencyAndTermContextProvider dftcp, boolean isBelowDMQ) {
root.prepareDocumentFrequencyCorrection(dftcp, isBelowDMQ);
}
@Override
public Query createQuery(FieldBoost boost, float dmqTieBreakerMultiplier, DocumentFrequencyAndTermContextProvider dftcp)
throws IOException {
return root.createQuery(
this.boost,
dmqTieBreakerMultiplier,
dftcp);
}
public boolean isNeverMatchQuery() {
return root instanceof NeverMatchQueryFactory;
}
}