package com.browseengine.bobo.query.scoring; import java.util.Arrays; import org.apache.lucene.search.Explanation; public class MultiplicativeFacetTermScoringFunction implements FacetTermScoringFunction { private float _boost = 1.0f; public final void clearScores() { _boost = 1.0f; } public final float score(int df, float boost) { return boost; } public final void scoreAndCollect(int df, float boost) { if (boost > 0) { _boost *= boost; } } public final float getCurrentScore() { return _boost; } public Explanation explain(int df, float boost) { Explanation expl = new Explanation(); expl.setValue(score(df, boost)); expl.setDescription("boost value of: " + boost); return expl; } public Explanation explain(float... scores) { Explanation expl = new Explanation(); float boost = 1.0f; for (float score : scores) { boost *= score; } expl.setValue(boost); expl.setDescription("product of: " + Arrays.toString(scores)); return expl; } }