/**
*
*/
package querqy.lucene.rewrite.prms;
import java.io.IOException;
import java.util.List;
import org.apache.lucene.index.IndexReader;
/**
* @author rene
*
*/
public class PRMSDisjunctionMaxQuery implements PRMSQuery {
final List<PRMSQuery> disjuncts;
private Double probability = null;
public PRMSDisjunctionMaxQuery(List<PRMSQuery> disjuncts) {
if (disjuncts.isEmpty()) {
throw new IllegalArgumentException("disjuncts.size() > 0 expected");
}
this.disjuncts = disjuncts;
}
/* (non-Javadoc)
* @see querqy.lucene.rewrite.prms.PRMSQuery#calculateProbability(org.apache.lucene.index.IndexReader)
*/
@Override
public double calculateLikelihood(IndexReader indexReader)
throws IOException {
if (probability == null) {
double max = 0.0;
for (PRMSQuery clause: disjuncts) {
max = Math.max(max, clause.calculateLikelihood(indexReader));
}
probability = max;
}
return probability;
}
public List<PRMSQuery> getDisjuncts() {
return disjuncts;
}
}