Sitecore 7 Поиск по всему контенту

Я программирую поисковый сайт для сайта на основе Sitecore. Я смог прийти к этому.

 var query = SearchContext.GetQueryable<MySearchResultItem>().Where(i =>        
                       i.ItemContent.Contains(this._View.SearchTerm)).ToArray();

MySearchResultsItem определяется следующим образом.

public class MySearchResultItem
{
    // Will match the _name field in the index
    [IndexField("_name")]
    public string Name
    {
        get;
        set;
    }

    [IndexField(Sitecore.ContentSearch.BuiltinFields.Content)]
    public string ItemContent
    {
        get;
        set;
    }

}

Когда я выполняю поиск с помощью

[IndexField("_name")]

, я получаю правильные результаты. Но я хотел бы искать во всех полях элементов, и я думаю, что это возможно с
[IndexField(Sitecore.ContentSearch.BuiltinFields.Content)].

Что я делаю неправильно? Какое поле IndexField следует использовать для запроса всего содержимого?

спасибо


person EngelbertCoder    schedule 19.06.2013    source источник
comment
Ваш код правильный. Вы уверены, что искомое значение (this._View.SearchTerm) проиндексировано?   -  person    schedule 19.06.2013


Ответы (1)


Поле Sitecore.ContentSearch.BuiltinFields.Content в индексе содержит только содержимое двоичных файлов в медиатеке. Если вы посмотрите на конфигурацию, она ссылается на Sitecore.ContentSearch.ComputedFields.MediaItemContentExtractor.

Для поиска по всем полям вам нужно будет добавить пользовательское IComputedIndexField к <fields hint="raw:AddComputedIndexField">, которое объединит все поля, по которым вы хотите выполнить поиск, или просто включите все поля, по которым вы хотите выполнить поиск, в свой запрос linq.

person Richard Seal    schedule 20.06.2013
comment
Это неправильно. Поле _content объединяет все поля элемента, чтобы обеспечить полнотекстовый поиск. Содержимое элемента мультимедиа — это только часть того, что индексируется в этом поле. sitecore.net/Community/Technical-Blogs/ - person nickwesselman; 29.01.2014