SITECORE MANIA 開発者向け技術ブログ

その他

山口

山口

Sitecore PowerShell Extensions (SPE)でSolr検索をする

はじめに

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のバージョンによって実装されている機能が異なります。

 
この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス