Solr — пользовательское текстовое поле обрабатывается как длинное вместо текста / строки

#indexing #solr #schema #sitecore #custom-field-type

#индексирование #solr #схема #sitecore #пользовательский тип поля

Вопрос:

Я использую Solr 7.5 для экземпляра Sitecore 9.2. Я добавил пользовательский тип поля в схему Solr (/conf/managed-schema.xml ), так что я могу выполнять поиск по строковым полям без учета регистра, основываясь на этом сообщении

 <fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>
 

У меня есть поле в конфигурации solr моего сайта:

 <field fieldName="c_item_part_number_ci" returnType="string_ci">Feature.Products.ComputedFields.ItemPartNumberField,Feature.Products</field>
 

Но в моем администраторе Solr оно отображается как поле с длинной точкой, и когда я пытаюсь проиндексировать свои элементы, я получаю сообщение об ошибке, потому что я пытаюсь передать текст, но он ожидает число (поле называется номером детали товара, но оно может содержать текст, в данном случае «Компактный-Элемент-20»)

введите описание изображения здесь

 <lst name="responseHeader">
  <int name="status">400</int>
  <int name="QTime">246</int>
</lst>
<lst name="error">
  <lst name="metadata">
    <str name="error-class">org.apache.solr.common.SolrException</str>
    <str name="root-error-class">java.lang.NumberFormatException</str>
  </lst>
  <str name="msg">ERROR: [doc=sitecore://web/{46730869-114b-47ab-9c71-218fbe858caf}?lang=enamp;amp;ver=1amp;amp;ndx=sitecore_web_index] Error adding field 'c_item_part_number_ci'='CAB' msg=For input string: "CAB"</str>
  <int name="code">400</int>
</lst>
</response>
 

Комментарии:

1. Вероятно, ваше поле не было определено при поступлении первого документа, который содержал числовое значение в поле. Поскольку вы не отключили режим без схемы, Solr угадает тип поля любого неопределенного поля и добавит его, и поскольку оно выглядело как числовое значение, оно определено как long поле. Удалите поле и добавьте его как нужный тип, затем переиндексируйте содержимое. В общем, режим без схемы должен быть отключен в рабочей среде.