自定义相似性类solr无法正常工作

时间:2015-01-08 14:19:34

标签: java solr lucene

我创建了这样的自定义相似度类:

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被添加到类加载器中:

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中注释掉引用相似性类的行并在后台启动服务器时,一切都很顺利,核心被加载。现在,当我取消注释schema.xml中的行并在管理面板中重新加载核心时,一切仍然有效但新的相似性类似乎不起作用。

分数和结果顺序仍与以前相同...... 任何帮助将不胜感激!!

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

1 个答案:

答案 0 :(得分:0)

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

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