}
@Override
public void rescore(String key, int vecid, int[] vector, Recommendation rec) {
rec.create(vecid);
TIntIntIterator iter = indexer.iterator();
float[] input = new float[this.base.size()];
if (this == rec.source) {
while (iter.hasNext()) {
iter.advance();
int tgtId = iter.key();
_get(tgtId, input, iReuseList);
float score = rec.scoring.score(key, vecid, vector, vector.length, this.key, tgtId, iReuseList,
length(tgtId));
rec.add(vecid, tgtId, score);
rec.add(tgtId, vecid, score);
}
rec.remove(vecid, vecid);
} else {
while (iter.hasNext()) {
iter.advance();
int tgtId = iter.key();
_get(tgtId, input, iReuseList);
float score = rec.scoring.score(key, vecid, vector, vector.length, this.key, tgtId, iReuseList,
length(tgtId));
rec.add(vecid, tgtId, score);
}