自定义相似性 class solr 不工作

Custom similarity class solr not working

我创建的自定义相似性 class 是这样的:

package org.apache.lucene.search.similarities;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.search.similarities.DefaultSimilarity;

public class MyNewSimilarityClass extends DefaultSimilarity {

@Override
public float coord(int overlap, int maxOverlap) {
    return 1.0f;
}

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

@Override
public float lengthNorm(FieldInvertState arg0) {
    return 1.0f;
}

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

}

将其导出到一个 jar 文件并将其上传到我在 solr 中的 /dist 文件夹。 在我的 solrconfig 中,我添加了以下行:

<lib dir="../../../dist/" regex="similarityJar.*\.jar" />

在我的 schema.xml 中,我添加了以下行:

<similarity class="org.apache.lucene.search.similarities.MyNewSimilarityClass"> </similarity>

当启动我的 solr 实例时,我可以看到 jar 已添加到 class 加载器:

3170 [coreLoadExecutor-5-thread-1] INFO  org.apache.solr.core.SolrResourceLoader  – Adding 'file:/var/www/apache-solr/dist/similarityJarNew.jar' to classloader

服务器启动但卡在:

3988 [coreLoadExecutor-5-thread-1] INFO  org.apache.solr.schema.IndexSchema  – Reading Solr     Schema from /var/www/apache-solr/productie/solr/collection1/conf/sc                                hema.xml
4025 [coreLoadExecutor-5-thread-1] INFO  org.apache.solr.schema.IndexSchema  – [collection1] Schema name=example
4174 [main] INFO  org.apache.solr.servlet.SolrDispatchFilter  – user.dir=/var/www/apache-solr/productie
4174 [main] INFO  org.apache.solr.servlet.SolrDispatchFilter  – SolrDispatchFilter.init() done
4217 [main] INFO  org.eclipse.jetty.server.AbstractConnector  – Started SocketConnector@0.0.0.0:8983

此后核心将不会加载。

当我注释掉 schema.xml 中提到相似性 class 的行并在后台启动服务器时,一切正常,核心已加载。现在,当我取消注释 schema.xml 中的行并在管理面板中重新加载核心时,一切仍然有效,但新的相似性 class 似乎不起作用。

分数和结果顺序还是和以前一样... 任何帮助将不胜感激!!

我在 CentOS 服务器上使用 solr 4.10.2。

原来问题出在我本地机器上的 java 版本!

我用 Java 1.8 构建 class,服务器版本是 1.7。在取消注释指向相似性 class 的行后重新加载 schema.xml 会在日志中弹出一个指出问题的错误。