Как добавить текст в поле _content в индексе Solr для реализации Sitecore?
Это для реализации Sitecore 7.5 - Solr 4.7. Я хотел бы иметь возможность изменить текст, который хранится в поле _content в Solr. Я считаю, что каким-то образом этот Sitecore объединяет все поля содержимого для элемента в поле _content в индексе. (Я думаю, что это правильно). Во время индекса я хотел бы иметь возможность написать свой собственный код, который потенциально может изменить текст, который хранится в поле _content в Solr. Это возможно? Есть идеи, как бы я поступил по этому поводу?
1 ответ
_content
является вычисляемым полем, что означает, что значение разрешается в момент сканирования элемента. Вы увидите, что вычисленное поле определено в вашей конфигурации:
<field fieldName="_content" returnType="string" type="Sitecore.ContentSearch.ComputedFields.MediaItemContentExtractor,Sitecore.ContentSearch">
<mediaIndexing ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration/mediaIndexing"/>
</field>
Я рекомендую декомпилировать класс, указанный в type
атрибут, чтобы увидеть, что он делает. Затем вы можете создать свой собственный вычисляемый класс поля (или наследовать от него) и заменить атрибут type.
С вычисленными полями действительно довольно просто работать. Они реализуют IComputedIndexField
который требует ComputeFieldValue
метод. Метод принимает аргумент типа IIndexable
(в большинстве случаев конкретный класс Item
) и вызывается каждый раз, когда элемент сканируется.
Так что в ComputeFieldValue
метод, который вы могли бы разыграть Iindexable
для Item
, а затем вернуть объединенную строку всех значений полей, которые вы хотите включить из этого элемента.
Смотрите здесь для получения дополнительной информации о вычисляемых полях:
Из того, что я понимаю, вы можете добавить еще один (отдельный) _content
поле с вашим собственным IComputedIndexField
реализация. Результирующие значения из всех добавленных полей с одинаковыми именами суммируются.
Смотрите также: https://kamsar.net/index.php/2014/05/indexing-subcontent/ и https://andrewwburns.com/2015/09/03/appending-to-the-_content-field-in-sitecore-search-7-2-and-7-5/