Поля вычисляемого индекса Sitecore - как хранить неотмеченные

Sitecore 8.1 с lucene по умолчанию. Я использую пользовательский индекс с вычисляемым полем для хранения истинных значений многолистного поля, а не направляющих. Это работает, и я вижу в инструменте Luke, что поле индексируется как текст.

Некоторые значения содержат пробелы, но я хочу, чтобы они были проиндексированы как целое поле. Проблема в том, что они индексируются токенизированным способом, поэтому, например, "Маленький Хэмптон" индексируется как "Маленький" и "Хэмптон".

Как я могу получить вычисленные поля, которые будут храниться без тегов? Смотрите раздел raw:AddComputedIndexField:

<indexConfigurations>
    <myCustomIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
    <indexAllFields>true</indexAllFields>
    <initializeOnAdd>true</initializeOnAdd>
    <analyzer ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/analyzer" />
    <fieldMap type="Sitecore.ContentSearch.FieldMap, Sitecore.ContentSearch">
        <fieldNames hint="raw:AddFieldByFieldName">
        <!-- you must have _uniqueid or you wont be able to update the document later -->
            <field fieldName="_uniqueid" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
            <analyzer type="Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
            </field>
            <field fieldName="title" storageType="YES" indexType="UNTOKENIZED" vectorType="YES" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />
            <field fieldName="summary" storageType="NO" indexType="TOKENIZED" vectorType="YES" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />  
        </fieldNames>
    </fieldMap>
    <fields hint="raw:AddComputedIndexField">
        <!-- resolves selected guids to text values -->
        <field storageType="NO" indexType="UNTOKENIZED" fieldName="my multilist field">My.CoolStuff.Class, My.CoolStuff</field>
    </fields>

Я попытался добавить storageType="NO" indexType="UNTOKENIZED" в поле, но без изменений оно остается тензилизованным и сохраненным.

2 ответа

Решение

Попробуйте добавить свое вычисленное поле в регулярный <fieldNames hint="raw:AddFieldByFieldName"> В разделе ДОПОЛНИТЕЛЬНО к вычисляемому полю укажите и анализатор.

например:

<fieldNames hint="raw:AddFieldByFieldName">
  <field fieldName="my multilist field" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
    <Analyzer type="Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
  </field>
</fieldNames>

Я могу предложить одну вещь для вас, и она должна работать:

Создайте вычисляемое поле, которое заменит пробелы в поле заголовка на " _ ", при поиске замените все пробелы в вашем поисковом слове на " _ ", так что это будет выглядеть так: Little_Hampton

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