[Sitecore 8][Luke][Lucence]Lukeを使ってサイトコア8のLucenceインデックスの内容を確認する

概要:Luke というツールを使用し、サイトコア8の Lucene インデックスの値を確認したり、またフィールドを追加して、中身を確認したりするメモ書き


検証環境は次の通りです。

  • Sitecore 8.0(rev.10922)
  • Luke 3.5.0

 

LukeはLuceneのインデックスブラウザで日本語でLukeについての記事がないかを検索したら、この記事をみてLukeを使ってインデックスを確認するについてもう少し書いてみたいと思いました。Lukeのダウンロード、インストールは上記の方の記事に詳しく書かれているのでここでは重複しません。ここではLukeを使ってインデックスの追加や確認手順のみを書きます。

既存のフィールドを確認する

20150104_01 20150104_02

 

アイテムを検索する

今日は自分が始めてLukeを使うユーザと想定して検索をしてみます。

どのバージョンでもインストール後、”Sample Item”があります。この”Sample Item”アイテムテンプレートを検索してみます。きっと簡単だろう。

20150104_03

Searchタブで検索したいキーワードを検索したいフィルドを選択すればいいのでは。。。

20150104_07

トライ1、結果なし。パーザーの結果を見ると、なるほど。。。
20150104_04

トライ2、やはり結果なし。。。ちゃんとパーザーされていたのに、なんで?

20150104_05

トライ3、小文字をしてみると結果があった。。。でもなんで?

20150104_06

インディクスのフィールドは通常.CONFIGで定義しているのでファイルで_templatenameで検索ををかけるとこのSitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config設定ファイルにてフィールドの設定でアナライザーの設定をみつけました。

<field 
  fieldName="_templatename" 
  storageType="YES" 
  indexType="TOKENIZED"
  vectorType="NO"
  boost="1f"
  type="System.String"
  SettingType="
Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">

<analyzer type="
Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
</field>

アナライザーはLowerCaseKeywordAnalyzerを使用しているので小文字となっているわけです。これで納得です。さてと、もしアナライザーを変更すれば小文字でなくでもサーチができるはずのではと思ってアナライザーを変えて試しました。同じ結果を見つけた。

20150104_08

ついてですが、複数のキーワードで複数のフィールドを検索したいなら、こんな感じです。

20150104_09

 

フィールドを追加し確認をする

さて、簡単な検索ができたところで、簡単なフィールドを追加してサーチしてみましょう。SampleItem テンプレートに Single-Line Text フィールドを追加し、インディクスを再構築します。

20150104_10

で再度インディクスを開き、確認20150104_11

Documentを開いてフィールドをみると、追加したフィールドが見えたらない。。。
20150104_12

ここに表示されたフィールドのリストは、「hydrate」というプロセスが利用できる値で、それは自動的にPOCOを移入プロセスです。もっと詳しい記事はここに
要するに保存タイプを指定する必要があります。

<fieldType 
fieldTypeName="single-line text"
storageType="NO"...

ただこの変更だとすべてのsingle-line textタイプのフィールドがインディクスに保存されるので、追加されるフィルド別にその設定をしましょう。
20150104_13

ただこの変更だとすべてのsingle-line textタイプのフィールドがインディクスに保存されるので、フィルド別に設定をします。

/configuration/sitecore/contentSearch/configuration/DefaultIndexConfiguration/fieldMap/fieldNames

<field
  fieldName="zzzMyLocation"
  storageType="YES"
  indexType="TOKENIZED"
  ...

 

Tips

再オープンで更新します。もし、再度Luke起動した場合はダウン印で以前したファイルを素早くリロードします。20150104_14

まとめ:

私は最初にLukeを使用したのは2011年Alexさんのこの記事をみた時からです。検索にかかわる作業をする際にLukeは欠かせないツールです。ただ実際に使ったLukeの機能は上記で書かれているだけです。もし、別のLukeの活用テクニックを知っているならぜひ教えてください。

Uncategorized