Sitecore: Ошибка при индексации поля Treelist?

У меня есть индекс в Sitecore. Одним из полей индексируемого шаблона является поле древовидного списка, называемое "тегами". Когда я проверяю индекс с помощью Люка, я вижу поле, в котором есть значения.

1.) Значения в индексе тегов - это идентификатор выбранного элемента списка - мне нужно, чтобы оно было отображаемым именем.

2.) Теперь мои журналы сканирования заполнены:

ПРЕДУПРЕЖДЕНИЕ. Вы указали и I ncludeTemplates, и ExcludeTemplates. Эта логика не поддерживается. Шаблоны исключений будут игнорироваться.

Это то, что у меня есть для моей конфигурации индексации, но, очевидно, у меня что-то не так:

<index id="knowledge_center_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
    <param desc="name">$(id)</param>
    <param desc="folder">$(id)</param>
    <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
    <configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration">
        <include hint="list:IncludeTemplate">
            <generalTemplatePage>{AD63DB1D-A3A5-4D16-9F19-7D878BBE2568}</generalTemplatePage>
            <newsPage>{85901309-D07C-447B-97DA-EA6F1581832C}</newsPage>
            <inTheNewsPage>{C49A9219-231D-42C6-AED2-9115CC241247}</inTheNewsPage>
        </include>
        <IndexAllFields>true</IndexAllFields>
        <fieldMap type="Sitecore.ContentSearch.FieldMap, Sitecore.ContentSearch">
            <fieldNames hint="raw:AddFieldByFieldName">
                <fieldType fieldName="tags" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />
            </fieldNames>
        </fieldMap>
    </configuration>
    <strategies hint="list:AddStrategy">
        <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
        <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/remoteRebuild" />
    </strategies>
    <commitPolicyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch">
        <policies hint="list:AddCommitPolicy">
            <policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" />
        </policies>
    </commitPolicyExecutor>
    <locations hint="list:AddCrawler">
        <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
            <Database>web</Database>
            <Root>/sitecore/content/Sites/My Site/Knowledge Center</Root>
        </crawler>
    </locations>
</index>

ОБНОВЛЕНИЕ: @Marek Musielak - Для #1 я перешел по ссылке, на которую вы указали в своем ответе, и снова и снова получаю такую ​​ошибку в моих Crawling.logs:

6272 12:49:18 ОШИБКА Не удалось вычислить значение для ComputedI ndexField: потенциал для индексации: sitecore://master/{2D06E798-6BFE-4089-A610-5C341BF28B09}? Lang=en&ver=3 Исключение: сообщение System.Reflection.TargetI nvocationException: Исключение было брошено целью вызова. Источник: mscorlib в System.RuntimeMethodHandle.I nvokeMethod(объектная цель, аргументы Object[], сигнатура сигнатуры, логический конструктор) в System.Reflection.RuntimeConstructorI nfo.I nvoke(связывание invokeAttr, связыватель связывателя, параметры связующего объекта, объект [], культура CultureI nfo).
в Sitecore.Reflection.ReflectionUtil.CreateObject(Type type, Object[] параметры) в Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] параметры, логическое утверждение) в Sitecore.Configuration.FactoryNCreateObject(Xmlring) [] параметры, логическое утверждение, помощник IFactoryHelper) в Sitecore.Configuration.Factory.GetI nnerObject(параметры XmlNode paramNode, параметры String [], логическое утверждение) в Sitecore.Configuration.Factory.AssignProperties(параметры XmlNode configNode, параметры String [], объект obringj), Булево утверждение, логическое отложенное, помощник IFactoryHelper) в Sitecore.Configuration.Factory.CreateObject(параметры XmlNode configNode, String [], логическое утверждение, вспомогательный IFactoryHelper) в Sitecore.Configuration.Factory.CreateObject, String configPath, String configPath assert) в Sitecore.Analytics.Reporting.ReportingQueryBase..ctor(ReportDataProviderBase reportProvider, CachingPolicy cachingPolicy) в Sitecore.ContentTesting.Analytics.Reporting.TestPotentialQuery..ctor(ReportDataProviderBase reportProvider) на сайте Sitecore.ContentTesting.ContentSearch.ComputedI ndexFields.TestPotentialMetricBase.ComputeFieldValue(II ndexable indexable) на сайте Sitecore.ContentSearch.LuceneProvider.AcedBaseUderDuderUceU

Вложенное исключение

Исключение: System.Reflection.TargetI nvocationException Сообщение: исключение было сгенерировано целью вызова. Источник: mscorlib в System.RuntimeMethodHandle.I nvokeMethod(объектная цель, аргументы Object[], сигнатура сигнатуры, логический конструктор) в System.Reflection.RuntimeConstructorI nfo.I nvoke(связывание invokeAttr, связыватель связывателя, параметры связующего объекта, объект [], культура CultureI nfo).
в Sitecore.Reflection.ReflectionUtil.CreateObject(Type type, Object[] параметры) в Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] параметры, логическое утверждение) в Sitecore.Configuration.FactoryNCreateObject(Xmlring) [] параметры, логическое утверждение, помощник IFactoryHelper) в Sitecore.Configuration.Factory.CreateObject(параметры String configPath, String[], логическое утверждение) в Sitecore.Analytics.Reports.StimulsoftIntegration.BuiltInFunctionsReportDataSource..ctor()

Вложенное исключение

Исключение: System.I nvalidOperationException Сообщение: невозможно использовать DataAdapterProvider, так как аналитика отключена. Источник: Sitecore.Analytics.MongoDB на Sitecore.Analytics.Data.DataAccess.MongoDb.MongoDbDataAdapterProvider..ctor(Func`2 driverFactory)

Почему это важно, если аналитика отключена?


ОБНОВЛЕНИЕ 2: @Rogier

Мне нужно было переместить fieldMap в defaultLuceneIndexConfiguration:

<defaultLuceneIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
<fieldMap type="Sitecore.ContentSearch.FieldMap, Sitecore.ContentSearch">
    <fieldNames hint="raw:AddFieldByFieldName">
        <field patch:before="field[0]" fieldName="tags" storageType="YES" indexType="UNTOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />
    </fieldNames>
</fieldMap>
<fields hint="raw:AddComputedIndexField">
    <field patch:before="field[0]" fieldName="tags">MyNamespace.Search.ComputedFields, MyNamespace.Search</field>
</fields>

Основной индексный патч выглядел так:

<index id="knowledge_center_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
    <param desc="name">$(id)</param>
    <param desc="folder">$(id)</param>
    <!-- This initializes index property store. Id has to be set to the index id -->
    <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
    <configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration">
        <include hint="list:IncludeTemplate">
            <generalTemplatePage>{AD63DB1D-A3A5-4D16-9F19-7D878BBE2568}</generalTemplatePage>
            <newsPage>{85901309-D07C-447B-97DA-EA6F1581832C}</newsPage>
            <inTheNewsPage>{C49A9219-231D-42C6-AED2-9115CC241247}</inTheNewsPage>
        </include>
        <IndexAllFields>true</IndexAllFields>
    </configuration>
    <strategies hint="list:AddStrategy">
        <!-- NOTE: order of these is controls the execution order -->
        <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
        <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/remoteRebuild" />
    </strategies>
    <commitPolicyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch">
        <policies hint="list:AddCommitPolicy">
            <policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" />
        </policies>
    </commitPolicyExecutor>
    <locations hint="list:AddCrawler">
        <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
            <Database>web</Database>
            <Root>/sitecore/content/Sites/My Site/Knowledge Center</Root>
        </crawler>
    </locations>

Я надеюсь, что это полезно...

1 ответ

Решение

Объявление 1):

По умолчанию Sitecore индексирует идентификаторы выбранных элементов. Причина этого проста: на секунду предположим, что Sitecore хранит имена тегов. Представь, что ты выбрал TagA а также TagB за MyArticle вещь. Sitecore индексирует ваш MyArticle пункт и сохраняет TagA а также TagB значения в индексе. Теперь вы переименованы TagA в Other TagA, Sitecore не сканирует повторно MyArticle потому что это не изменилось (изменился только элемент тега). Так что ваши MyArticle элемент имеет неверные значения в индексе - он все еще TagA там.

Конечно, если вы знаете, что НИКОГДА не будете менять имя (или отображаемое имя) любого из ваших тегов, вы можете легко создать вычисляемое поле, в котором будут отображаться отображаемые имена элементов. Вот пример того, как вы можете сделать это в этой записи блога: Поле вычисляемого индекса для поля типа MultiList

Объявление 2):

Просто иди к /sitecore/admin/showconfig.aspx страницы и проверьте, есть ли место с ExcludeTemplate определены. Затем проследите эту запись в вашем App_Config\Include папка и вуаля.

Другие вопросы по тегам