Context ::在覆盖ClassicSimilarityFactory时在solr-core 5.5.0中获取错误。粘贴了日志和类。重写ClassicSimilarityFactory会在覆盖ClassicSimilarityFactory时抛出错误 - 上下文::在solr-core 5.5.0中获取错误。粘贴了日志和类。重写ClassicSimilarityFactory会抛出错误 -
package com.Others;
import org.apache.lucene.analysis.payloads.PayloadHelper;
import org.apache.lucene.search.similarities.ClassicSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.search.similarities.ClassicSimilarityFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PayloadSimilarityFactory extends ClassicSimilarityFactory {
@Override
public void init(SolrParams params) {
super.init(params);
}
@Override
public Similarity getSimilarity() {
return new PayloadSimilarity();
}
}
class PayloadSimilarity extends ClassicSimilarity {
private final static Logger logger = LoggerFactory.getLogger(PayloadSimilarity.class);
//Here's where we actually decode the payload and return it.
@Override
public float scorePayload(int doc, int start, int end, BytesRef payload) {
logger.info("PayloadSimilarity ---- " + payload);
if (payload == null)
return 1.0F;
return PayloadHelper.decodeFloat(payload.bytes, payload.offset);
}
}
Schema.xml file :
<fieldType name="payloads" class="solr.TextField" indexed="true" stored="true">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float" delimiter="|"/>
</analyzer>
<similarity class="com.Others.PayloadSimilarityFactory"/>
</fieldType>
</types>
Error Logs :
Error creating core [catalog]: Could not load conf for core catalog: Can't load schema /Users/z002cww/repo/jarvis-solr-config/config/catalog/conf/schema.xml: FieldType 'payloads' is configured with a similarity, but the global similarity does not support it: class org.apache.solr.search.similarities.ClassicSimilarityFactory
org.apache.solr.common.SolrException: Could not load conf for core catalog: Can't load schema /Users/z002cww/repo/jarvis-solr-config/config/catalog/conf/schema.xml: FieldType 'payloads' is configured with a similarity, but the global similarity does not support it: class org.apache.solr.search.similarities.ClassicSimilarityFactory
at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:84)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:812)
at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:87)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:467)
答案 0 :(得分:0)
您必须使用SchemaSimilarityFactory
作为配置的默认相似度来支持使用每个字段的相似性。
<similarity class="solr.SchemaSimilarityFactory"/>
请参阅Solr Lucene Scorer和the mailinglist answer for the same question的答案之一。