如何在 sitecore 中使用 ContentSearch API 查询多个字段
How to query more than one field using ContentSearch API in sitecore
我正在使用 Sitecore ContentSearch API.I 已经在 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 搜索数据可能是标题或 body 或其他字段所以我想检查所有三个字段。
尝试向 Where
子句添加另一个条件:
var query = context.GetQueryable<MovieSearchResultItem>()
.Where(result => result.Body.Contains(txtQuery)
|| result.Title.Contains(txtQuery)
|| result.OtherField.Contains(txtQuery)).ToList();
很简单,你可以像这样添加它的表达式:
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
我可以推荐 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();
我正在使用 Sitecore ContentSearch API.I 已经在 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 搜索数据可能是标题或 body 或其他字段所以我想检查所有三个字段。
尝试向 Where
子句添加另一个条件:
var query = context.GetQueryable<MovieSearchResultItem>()
.Where(result => result.Body.Contains(txtQuery)
|| result.Title.Contains(txtQuery)
|| result.OtherField.Contains(txtQuery)).ToList();
很简单,你可以像这样添加它的表达式:
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
我可以推荐 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();