Sitecore搜索模板查询

本文关键字:查询 搜索 Sitecore | 更新日期: 2023-09-27 18:00:36

我想查询Sitecore中内容项的模板,以便在该项的模板与templates变量中包含的任何TemplateID匹配时返回结果。templates变量包含要在内容项上搜索的TemplateID的管道分隔列表。

我尝试了几种不同的方法,但没有提供我想要的结果。下面是一个这样的例子,我还尝试使用templates字符串上的split来分离每个模板,并在下面运行foreach循环。

var multiSearchParam = new MultiFieldSearchParam 
{
    Database = dbName,
    InnerCondition = QueryOccurance.Should
};
multiSearchParam.TemplateIds = templates;
parameters.Add(multiSearchParam);

我觉得我使用的条件好像有问题。。。。当我只使用一个模板ID运行这个时,它就像一个魅力,所以查询多个模板似乎是个问题。

有人对我做错了什么有什么建议吗?

Sitecore搜索模板查询

使用Sitecore ContentSearch,我就是这样解决的:

 Expression<Func<SearchResultItem, bool>> predicate = PredicateBuilder.True<SearchResultItem>();
            predicate = predicate.Or(p => p.TemplateName.Equals("News"));
            predicate = predicate.Or(p => p.TemplateName.Equals("Page"));
            IEnumerable<SearchResultItem> results = _searchContext
                .GetQueryable<SearchResultItem>()
                .Where(predicate);