【问题标题】:Solr 5.5.0 error when overriding ClassicSimilarityFactory覆盖 ClassicSimilarityFactory 时出现 Solr 5.5.0 错误
【发布时间】:2016-10-26 09:04:43
【问题描述】:

上下文:: 覆盖 ClassicSimilarityFactory 时,在 solr-core 5.5.0 中出现错误。已粘贴日志和课程。覆盖 ClassicSimilarityFactory 会引发错误 - Context:: 在覆盖 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)

【问题讨论】:

  • 欢迎来到 SO。请访问此网站以了解如何提出一个好的问题,以便我们为您提供帮助:stackoverflow.com/help/how-to-ask
  • 找到解决方案 - 在 schema.xml 的第一行(模式名称 ="XYZ" )下方添加 并且它将起作用。如果有人遇到问题,请告诉我

标签: search solr


【解决方案1】:

您必须使用 SchemaSimilarityFactory 作为配置的默认相似度,以支持使用每个字段的相似度。

<similarity class="solr.SchemaSimilarityFactory"/>

查看Solr Lucene Scorerthe mailinglist answer for the same question 的答案之一。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
  • 2020-06-28
  • 2021-10-11
相关资源
最近更新 更多