Sitecore HOWTO:在项目存储桶中搜索具有特定值的项目

安德鲁·佐洛图欣

我有一个装有超过3万个物品的物品桶。我需要快速搜索将特定字段设置为特定值的项目,甚至更好的方法是进行SELECT WHERE fieldValue IN(1,2,3,4)语句之类的操作。有没有现成的解决方案?我在网上搜索,发现的唯一内容是“项目存储桶和搜索开发人员指南”,但是没有代码示例。

艾哈迈德·奥库(Ahmed Okour)

使用Sitecore内容编辑器

转到存储桶项,然后在“搜索”选项卡中,开始键入以下内容(将字段名和值替换为实际的字段名和值):

自定义:字段名称|值

然后按Enter键,您将看到查询结果,如果需要,可以一次进行多个查询。

使用Sitecore内容搜索API:

using Sitecore.ContentSearch;
using Sitecore.ContentSearch.Linq;
using Sitecore.ContentSearch.SearchTypes;
using Sitecore.ContentSearch.Linq.Utilities

ID bucketItemID = "GUID of your bucket item";
ID templateID = "Guid of your item's template under bucket";
string values = "1,2,3,4,5";

using (var context = ContentSearchManager.GetIndex("sitecore_web_index").CreateSearchContext())
{
    var predicate = PredicateBuilder.True<SearchResultItem>();
    predicate = PredicateBuilder.And(item => item.TemplateId == new ID(templateID) 
                                     && item.Paths.Contains(bucketItemID));
    var innerPredicate = PredicateBuilder.False<SearchResultItem>();
    foreach(string val in values.Split(','))
    {
         innerPredicate = PredicateBuilder.False<SearchResultItem>();
         innerPredicate = innerPredicate.Or(item => item["FIELDNAME"] == val);
    }
    predicate = predicate.And(innerPredicate);

    var result = predicate.GetResults();
    List<Item> ResultsItems = new List<Item>();
    foreach (var hit in result.Hits)
    {
       Item item = hit.Document.GetItem();
       if(item !=null)
       {
          ResultsItems .Add(item);
       }
    }
}

以下链接可以为Search API提供良好的开始:

  1. http://www.fusionworkshop.co.uk/news-and-insight/tech-lab/sitecore-7-search-a-quickstart-guide#.VPw8AC4kWnI
  2. https://www.sitecore.net/learn/blogs/technical-blogs/sitecore-7-development-team/posts/2013/06/sitecore-7-poco-explained.aspx
  3. https://www.sitecore.net/learn/blogs/technical-blogs/sitecore-7-development-team/posts/2013/05/sitecore-7-predicate-builder.aspx

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Sitecore数据提供程序显示存储桶中的项目

来自分类Dev

如何以编程方式恢复 Sitecore 项目存储桶?

来自分类Dev

Sitecore Unicorn项目同步

来自分类Dev

Sitecore词典项目

来自分类Dev

Sitecore项目-Localhost挂起

来自分类Dev

Sitecore词典项目

来自分类Dev

Sitecore搜索模板查询

来自分类Dev

Sitecore 日志 - Azure 搜索

来自分类Dev

Sitecore项目-Localhost刚刚挂起

来自分类Dev

Sitecore媒体项目和URL

来自分类Dev

Sitecore Droptree不会排除项目

来自分类Dev

Sitecore。从占位符读取项目

来自分类Dev

项目的 Sitecore 增量发布

来自分类Dev

如何使用Sitecore添加具有预定义语言的项目?

来自分类Dev

具有IP的Sitecore项目和媒体网址

来自分类Dev

如何使用Sitecore添加具有预定义语言的项目?

来自分类Dev

具有IP的Sitecore项目和媒体网址

来自分类Dev

Sitecore空值异常

来自分类Dev

在Sitecore中使用QueryBuilder字段类型限制存储桶搜索

来自分类Dev

Sitecore中的GeneralLink

来自分类Dev

Sitecore中的GeneralLink

来自分类Dev

在Sitecore 6.5中按ID获取项目

来自分类Dev

根据SiteCore中的显示名称获取项目

来自分类Dev

单击Sitecore后端中的项目时出错

来自分类Dev

删除Sitecore中的所有推荐人项目

来自分类Dev

Sitecore-返回父级存储桶

来自分类Dev

在Sitecore 7中创建平面存储桶结构

来自分类Dev

在Sitecore 7中创建平面存储桶结构

来自分类Dev

如何实施Sitecore网站搜索