package com.browseengine.bobo.query.scoring;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.lucene.search.Explanation;
public abstract class BoboDocScorer {
protected final FacetTermScoringFunction _function;
protected final float[] _boostList;
public BoboDocScorer(FacetTermScoringFunction scoreFunction, float[] boostList) {
_function = scoreFunction;
_boostList = boostList;
}
public abstract float score(int docid);
abstract public Explanation explain(int docid);
public static float[] buildBoostList(List<String> valArray, Map<String, Float> boostMap) {
float[] boostList = new float[valArray.size()];
Arrays.fill(boostList, 0.0f);
if (boostMap != null && boostMap.size() > 0) {
Iterator<Entry<String, Float>> iter = boostMap.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, Float> entry = iter.next();
int index = valArray.indexOf(entry.getKey());
if (index >= 0) {
Float fval = entry.getValue();
if (fval != null) {
boostList[index] = fval.floatValue();
}
}
}
}
return boostList;
}
}