はじめに
SitecoreではキャッシュとしてSolrを利用しています。
アイテム自体を検索するよりもSolrのキャッシュを検索した方が早いことがあるので状況に応じて処理を変更しています。
今回はSolrを使ったアイテム検索をSitecore PowerShell Extensions (以降、SPE)上にて実施する方法を紹介します。
Find-Itemコマンド
コマンドとしてはFind-Itemを使います。
Link: Find-Item | Sitecore PowerShell Extensions
検索条件の作成
はじめに検索条件を作成ます。
基本は以下のものを指定します。
Filter |
検索条件 Equals=等しい Contains=含まれる 等 条件によって切り替えます。 |
Field |
検索対象のフィールド名 |
Value |
検索する値 |
デフォルトでは_templatenameというフィールドにテンプレート名、_languageに言語が入るので
テンプレート名がSample Item、言語が日本語のものを取得するようにします。
#テンプレート名がSample Item、言語が日本語のものを取得する
$criteria = @(
@{Filter = "Equals"; Field = "_templatename"; Value = "Sample Item"},
@{Filter = "Equals"; Field = "_language"; Value = "ja-JP"}
)
対象のIndexを指定
今回はmasterデータベース内を検索します。
デフォルトではmasterデータベースはsitecore_master_indexという名前になっています。
#対象Indexはsitecore_master_indexを指定し、Criteriaは先ほど作成した検索条件を指定
$props = @{
Index = "sitecore_master_index"
Criteria = $criteria
}
#Solr検索を実行する
Find-Item @props
実行結果
実行結果は以下のようになります。
Solrを検索しているので、Search.log.txtにも検索ログが表示されています。
ManagedPoolThread #1 16:20:10 INFO Solr Query - ?q=(_templatename:("Sample Item") AND _language:(ja-JP))&rows=1000000&fq=_indexname:(sitecore_master_index)&wt=xml
さいごに
大量のアイテムを検索するときにはSolrを使うと素早く見つけることができます。
状況に応じて使い分けて高速にアイテムを検索しましょう。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。