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);
私が興味を持っていることの 1 つは、上記のコードがSitecore.Contextへのアクセス権を持たない DAL モジュールで実行されることですが、MasterDatabase.GetItem()呼び出しは実際にはマスター データベースからアイテムを取得しますが、私は取得しません。バケット API コードコンテキストのどこかが潜在的に参照されているかどうかわかりませんか?