我正在编写ContentSearch应用程序,我在Item.is中索引了一组字段,可以同时查询多个字段吗?
 public static List<MovieSearchResultItem> SearchResults(string txtQuery)
        {
            using (var context = ContentSearchManager.GetIndex(indexName).CreateSearchContext())
            {
                var query = context.GetQueryable<MovieSearchResultItem>().Where(result => result.Body.Contains(txtQuery)).ToList();
                return query;
            }
        }在上面的查询中,我只是使用Body field.how来包含多个fields.My搜索数据,可能是标题、正文或其他字段,所以我想检查这三个字段。
发布于 2015-01-20 12:00:14
尝试向Where子句添加另一个条件:
var query = context.GetQueryable<MovieSearchResultItem>()
    .Where(result => result.Body.Contains(txtQuery)
        || result.Title.Contains(txtQuery)
        || result.OtherField.Contains(txtQuery)).ToList();发布于 2015-01-20 12:01:27
很简单,您可以添加如下表达式:
var query = context.GetQueryable<MovieSearchResultItem>().Where(result => result.Body.Contains(txtQuery) || result.Title.Contains(txtQuery))或者您可以使用PredicateBuilder,这里有更多的信息:http://www.sitecore.net/Learn/Blogs/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/05/Sitecore-7-Predicate-Builder.aspx
发布于 2015-01-20 13:46:32
我可以推荐PredicateBuilder。示例:
        Expression<Func<SearchResultItem, bool>> predicate = PredicateBuilder.True<SearchResultItem>();
        predicate = predicate.And(p => p.TemplateName.Equals("News"));
        predicate = predicate.And(p => p.Language == Context.Language.Name);
        List<SearchResultItem> results = context
            .GetQueryable<SearchResultItem>()
            .Where(predicate)
            .ToList();https://stackoverflow.com/questions/28044496
复制相似问题