start.jspの変更についての説明
start.jspの中では、buildFacetForSearchというコールバックの中でFacet Search用のパラメータを組み立てています。例えば間取りのFacetパラメータは
var ROOM_LAYOUT_FACET = "ddm/" + structure_id + "/room_layout_ja_JP:"
となっていますが、このFacetパラメータはどのように取得しているのでしょうか? それにはLuceneのインデックスを調べる必要があります。Luceneのインデックスを見るのに、Lukeというツールがあるので、これを使いましょう。
ここより最新版を取得してきて、適当なディレクトリに展開しましょう。現在の最新版はAlpha 4.0.0なので、lukeall-4.0.0-ALPHA.jarというファイルが展開されました。実行するにはコマンドラインより以下のようにして起動します。
java –jar lukeall-4.0.0-ALPHA.jar
Open in Read-Only modeとForce unlock, if lockedの両方にチェックをつけ、左上のBrowse...ボタンを押下して、自分のLiferayを展開している環境から、Luceneのインデックスフォルダを指定します。
LiferayではLuceneのインデックスはデフォルトで/data/luceneの下に展開されます。みなさんの環境によってフォルダ名は変わりますが、筆者の環境では/data/lucene/10157のフォルダを指定しました。
左のリストにインデックスのプロパティが表示されます。賃料はrentというフィールドを作りましたが、インデックスの中に/ddm/数字/rent_ja_JPといった感じで、rent + 言語コードの組み合わせでインデックスされていることが分かります。
ddm/10906/rent_ja_JPを左のリストで指定して、画面真ん中の「Show top terms」を指定すると、右側にインデックスされている内容が表示されます。
今回は日本語のみなので、rent_ja_JPを対象としてFacet Searchを掛けようと思います。
Facet Searchとは?
ファセット・サーチは、ファセット・ナビゲーションとも呼ばれています。LiferayではJavaのコードを書く以外にも、Webコンテンツ検索では、検索クエリから、Liferayに標準搭載されているLuceneのFacet Searchを利用することができます。
Solrを使用すると、クラスタリングでの拡張性やインデックス管理も比較的容易で、検索も使いやすくなります。LiferayはSolr4用にプラグインを無料で、マーケットプレイスで提供しているので、そちらを使用するとSolrとの連携は比較的簡単にできます。
LiferayはデフォルトではLuceneでインデックスを行っていますが、3ノード以上のクラスタリングは、パフォーマンスに問題が出てくるので、そうした規模でインデックスを考慮する必要がある場合は、LiferayデフォルトのLucene単体ではなく、SolrやElastic Searchなど、大規模使用を考慮したソフトウェアの使用をおすすめします。
