@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 boolean scoreDocsInOrder, final boolean topScorer, 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, true, false, 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; }
if (c.isProhibited()) buffer.append("-"); else if (c.isRequired()) buffer.append("+");
} else if (c.isProhibited()) { prohibited.add(subScorer); } else {
if (c.isProhibited()) buffer.append("-"); else if (c.isRequired()) buffer.append("+");
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();