Java 加载了Solr自定义相似性类,但对排名结果没有影响。为什么覆盖不起作用?
我的自定义相似性类Java 加载了Solr自定义相似性类,但对排名结果没有影响。为什么覆盖不起作用?,java,solr,lucene,Java,Solr,Lucene,我的自定义相似性类PercentageSimilarityClass已添加到类加载器中,但结果的排名与以前相同 这是我的密码。我做错了什么 package org.apache.lucene.search.similarities; import org.apache.lucene.search.similarities.DefaultSimilarity; public class PercentageSimilarityClass extends DefaultSimilarity {
PercentageSimilarityClass
已添加到类加载器中,但结果的排名与以前相同
这是我的密码。我做错了什么
package org.apache.lucene.search.similarities;
import org.apache.lucene.search.similarities.DefaultSimilarity;
public class PercentageSimilarityClass extends DefaultSimilarity {
@Override
public float coord(int overlap, int maxOverlap) {
return ((overlap /(float)maxOverlap)*(overlap/(float)maxOverlap));
}
@Override
public float queryNorm(float sumOfSquaredWeights) {
return (float) 1.0;
}
@Override
public float tf(float freq) {
return (float) 1.0;
}
@Override
public float sloppyFreq(int distance) {
return (float) 1.0;
}
@Override
public float idf(long docFreq, long numDocs) {
return (float) 1.0;
}
}
我也试着加入
public PercentageSimilarityClass(){
super();
}
但这没什么区别
任何帮助都将不胜感激
编辑
我希望Solr根据在文档中找到的查询词的数量对文档进行排序;单词越多,排名越高
因此,我试图增加coord()
因子的权重(通过平方),并减少其他因子(通过让它们返回(float)1.0
)
我已经计算了每个返回文档中由查询词组成的百分比,在添加自定义相似度之前和之后,排名前十的文档中都有百分比为
21.74%
12.5%
15.38%
27.59%
10.34%
44.44%
37.5%
14.29%
19.3%
20.0%
在本例中,由查询词组成的44.44%的文档应该排在第一位,当我将搜索范围扩展到10个文档之外,扩展到100或500个文档时,我会得到许多由查询词中的词组成的70%以上的文档,这些词还没有排在第一位。您应该提供示例输入,这类问题的预期输出和实际输出。除此之外,这是如何调用的?@NathanielFord请参阅我的编辑。您是否在schema.xml文件中添加了相似性实现?()正如spyk所指出的,您需要在schema.xml中配置它,在您自己实现相似性之前,您检查过吗?是的,它已经在schema.xml中实现为
,并且它声明它已经在Solr启动时添加到类加载器中,那么代码本身是否有问题?