Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载了Solr自定义相似性类,但对排名结果没有影响。为什么覆盖不起作用?_Java_Solr_Lucene - Fatal编程技术网

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启动时添加到类加载器中,那么代码本身是否有问题?