自定义了一个similarity问题

胡椒csdn 2016-03-22 01:57:32
自定义了一个similarity,仿照classicsimilarity写的,代码如下 ,solr版本时5.4.1
public class CustomSimilarity extends TFIDFSimilarity{

@Override
public float coord(int overlap, int maxOverlap) {
return 1/ (float)maxOverlap;
}

@Override
public float decodeNormValue(long arg0) {
return 1;
}

@Override
public long encodeNormValue(float arg0) {
return 1;
}

@Override
public float idf(long docFreq, long numDocs) {
return 1;
}

@Override
public float lengthNorm(FieldInvertState state) {
final int numTerms;
if (discountOverlaps)
numTerms = state.getLength() - state.getNumOverlap();
else
numTerms = state.getLength();
return state.getBoost() * ((float) (1.0 / Math.sqrt(numTerms)));
}

@Override
public float queryNorm(float sumOfSquaredWeights) {
return 1;
}

@Override
public float scorePayload(int doc, int start, int end, BytesRef payload) {
return 1;
}

@Override
public float sloppyFreq(int distance) {
return 1;
}

@Override
public float tf(float freq) {
return 1;
}

protected boolean discountOverlaps = true;



public void setDiscountOverlaps(boolean v) {
discountOverlaps = v;
}

/**
* Returns true if overlap tokens are discounted from the document's length.
* @see #setDiscountOverlaps
*/
public boolean getDiscountOverlaps() {
return discountOverlaps;
}

@Override
public String toString() {
return "CustomSimilarity";
}

}
配置没有问题,但是lengthNorm()方法一直没有被调用(无论怎么改都不影响得分),请问各位大神什么原因呀?
...全文
194 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
胡椒csdn 2016-11-30
  • 打赏
  • 举报
回复
lengthNorm()方法是在创建索引的时候被调用的

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧