我正在为我的 Sitecore 6.4、.NET 2.0 项目实施 Sitecore 项目存储桶。
我已经安装了所有东西,并且一切似乎都正常工作。我创建了一个项目存储桶和一个可存储的模板。搜索 UI 在内容编辑器查询中完美运行。我还可以在 Sitecore Index Viewer 和 Sitecore Rocks Index 实用程序中查询我的项目的索引。
但是,当我尝试在代码中实现 UI 时,无论我尝试什么方法,我都无法得到任何结果。对于我尝试运行的每种类型的查询,我都会返回 null。我试过 BucketManager、Search 扩展方法和 BucketQuery 都无济于事。
我还打开了调试日志记录,当我通过搜索选项卡在内容编辑器中搜索时,我看到了查询的日志记录,但是当我的代码执行时,不会生成任何日志条目。有谁知道为什么会发生这种情况。非常乐意提供更多信息来尝试追踪这一点。
Item root = MasterDatabase.GetItem(Constants.ARI_BUCKET_LOCATION_ID);
var items = root.Search(out hitCount,
text: "*",
indexName: "itembuckets_buckets",
location: root.ID.ToString(),
language: "en",
startDate: "01/01/2013",
endDate: "12/31/2013",
numberOfItemsToReturn: 100,
pageNumber: 1,
templates: tmpInventoryRate.ID.ToString());
var itemresults = root.Search(out hitCount, numberOfItemsToReturn: 100, language: "en");
var results = BucketManager.Search(root, out hitCount, templates: tmpInventoryRate.ID.ToString());
var textresults = BucketManager.Search(MasterDatabase.GetItem(Constants.ARI_BUCKET_LOCATION_PATH), out hitCount, text: "OEH", location: root.ID.ToString());
var pathresults = BucketManager.Search(MasterDatabase.GetItem(Constants.ARI_BUCKET_LOCATION_PATH), out hitCount, templates: tmpInventoryRate.ID.ToString());
var queryresults = new BucketQuery().WhereTemplateIs("*").Run(root, 100);
我很好奇需要注意的一件事是,上面的代码在一个 DAL 模块中执行,该模块无权访问Sitecore.Context但MasterDatabase.GetItem()调用实际上确实从主数据库中检索了项目,但我没有'不知道 Bucket API 代码上下文中的某处是否可能被引用?