@Override public float getValueForNormalization() throws IOException { float sum = 0.0f; for (int i = 0; i < weights.size(); i++) { // call sumOfSquaredWeights for all clauses in case of side effects final float s = weights.get(i).getValueForNormalization(); // sum sub weights if (!clauses.get(i).isProhibited()) { // only add to sum for non-prohibited clauses sum += s; } } // boost each sub-weight sum *= NodeBooleanQuery.this.getBoost() * NodeBooleanQuery.this.getBoost(); return sum; }
@Override public Scorer scorer(final AtomicReaderContext context, final Bits acceptDocs) throws IOException { final List<NodeScorer> required = new ArrayList<NodeScorer>(); final List<NodeScorer> prohibited = new ArrayList<NodeScorer>(); final List<NodeScorer> optional = new ArrayList<NodeScorer>(); final Iterator<NodeBooleanClause> cIter = clauses.iterator(); for (final Weight w : weights) { final NodeBooleanClause c = cIter.next(); final NodeScorer subScorer = (NodeScorer) w.scorer(context, acceptDocs); if (subScorer == null) { if (c.isRequired()) { return null; } } else if (c.isRequired()) { required.add(subScorer); } else if (c.isProhibited()) { prohibited.add(subScorer); } else { optional.add(subScorer); } } if (required.size() == 0 && optional.size() == 0) { // no required and optional clauses. return null; } return new NodeBooleanScorer(this, required, prohibited, optional); }
@Override public float getValueForNormalization() throws IOException { float sum = 0.0f; for (int i = 0; i < weights.size(); i++) { // call sumOfSquaredWeights for all clauses in case of side effects final float s = weights.get(i).getValueForNormalization(); // sum sub weights if (!clauses.get(i).isProhibited()) { // only add to sum for non-prohibited clauses sum += s; } } // incorporate root weight sum += rootWeight.getValueForNormalization(); // boost each weight sum *= TwigQuery.this.getBoost() * TwigQuery.this.getBoost(); return sum; }
/** Prints a user-readable version of this query. */ @Override public String toString(final String field) { final StringBuilder buffer = new StringBuilder(); final boolean hasBoost = (this.getBoost() != 1.0); buffer.append("("); for (int i = 0; i < clauses.size(); i++) { final NodeBooleanClause c = clauses.get(i); if (c.isProhibited()) buffer.append("-"); else if (c.isRequired()) buffer.append("+"); final Query subQuery = c.getQuery(); if (subQuery != null) { buffer.append(subQuery.toString(field)); } if (i != clauses.size() - 1) buffer.append(" "); } buffer.append(")"); if (hasBoost) { buffer.append(ToStringUtils.boost(this.getBoost())); } return buffer.toString(); }
if (c.isProhibited()) buffer.append("-"); else if (c.isRequired()) buffer.append("+");
} else if (c.isProhibited()) { prohibited.add(subScorer); } else {
required.add(subScorer.getSpans()); else if (c.isProhibited()) { prohibited.add(subScorer.getSpans());
if (clauses.size() == 1) { // optimize 1-clause queries final NodeBooleanClause c = clauses.get(0); if (!c.isProhibited()) { // just return clause
if (!c.isProhibited()) { sumExpl.addDetail(e); sum += e.getValue();
if (!c.isProhibited()) { sumExpl.addDetail(e); sum += e.getValue();