#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
поле. Удалите поле и добавьте его как нужный тип, затем переиндексируйте содержимое. В общем, режим без схемы должен быть отключен в рабочей среде.