日本語での検索
Ploneには最初からコンテンツを検索する機能がありますが、初期状態では日本語での検索には対応していません。日本語検索をできるようにするために、ejSplitterをインストールして設定する手順を記述します。
目次
- ejSplitterのダウンロードとインストール[ejsplitter]
- 日本語での検索設定[catalog]
ejSplitterのダウンロードとインストール[ejsplitter]
Zopeで日本語の検索ができるようにするためには、日本語を分かち書き(単語ごとに空白をいれる)ことができるようにする必要があります。ここでは、インストールが簡単な ejSplitter をインストールします。
- 最新版をダウンロード
最新版のejSplitter ejSplitter-0.5.0.tar.gz をダウンロードします。
- tar 等のコマンドを使用して、ダウンロードした圧縮ファイルを展開します。
- すると、ejSplitter というディレクトリができるので、このディレクトリを
Productsディレクトリに移動します。 デフォルトでは下記のディレクトリになります。- Windows環境:
C:\Zope-Instance\Products - Vine Linux環境:
/var/lib/zope/Products/
ただし、Vine Linux環境の場合は、プロダクトの所有者と所有グループを zope にしておく必要があります。 下記のコマンドを実行して所有権の変更をしてください。
% sudo chown -R zope:zope /var/lib/zope/Products/ejSplitter
- Windows環境:
- ejSplitterをインストールしたら、Zopeサーバに認識させるためにZopeサーバを再起動します。
- 再起動後、Zopeの管理画面(http://localhost:8080/manage")にWeb browserでアクセスします。'Control_Panel'の下の'Products'に移動します。
- するとZopeにインストールされているプロダクトの一覧が表示されます。この中にejSplitterが正しく表示されていることを確認します。
日本語での検索設定[catalog]
Ploneでは検索に関する設定は portal_catalog という名前の Plone Catalog Tool に入っています。ここの設定を変更することにより、先ほどインストールした ejSplitter を使って日本語で検索できるようになります。
日本語検索用辞書の作成[lexicon]
- Zopeの管理画面にアクセスし、作成したPlone Siteの下の
portal_catalogに移動します。
- ここに、ejSplitterを登録するため
ZCTextIndex Lexiconというオブジェクトを追加します。
- すると、ZCTextIndex Lexiconの設定項目を聞いてくるので、以下のような項目を設定て、'Add'ボタンをクリックします。
設定項目の詳細は以下のとおりです。
- Id このオブジェクトの名前です。わかりやすくするために、
ejSplitterとしておきます。 - Title とくに指定する必要はありません
- Case Normalizer (英語の)大文字小文字を区別するかを指定します。チェックしておくと有効(区別しない)となります。
- Stop Words これは the とか and のような一般的な単語と、1文字だけの単語の扱いをどうするかを指定します。ここでは、一般的な単語と1文字単語を両方とも削除するように指定しています。
- Word Splitter ここに使用するSplitterを指定します。ここで、ejSplitter(UTF-8)を指定します。
- Id このオブジェクトの名前です。わかりやすくするために、
日本語検索用インデックスの作成[index]
次に、Ploneのコンテンツを ejSplitter を使って分かち書きするように変更します。
- 最初に
portal_catalogのIndexesタブをクリックします。
- ここには検索用インデックスとしてPloneの各種フィールドが表示されています。そのうち日本語が入る可能性のある
Description,SearchableText,Titleインデックスの設定を変更します。最初に、この3つのインデックスを選択してRemove indexボタンをクリックし、一旦削除します。
- 次に、インデックスを再作成するために、
ZCTextIndexを追加します。
- 先ほど削除した3つの
Description,SearchableText,Titleインデックスを再度作成します。(3, 4の手順を3回繰り返します。)
設定項目の詳細は以下のとおりです。
- Id ここに、
Description,SearchableText,Titleというインデックスの対象となるフィールド名を入力します。 - Indexed attributes ここは何に使うんでしょう?とりあえず何も入力する必要はないようです。
- Ranking Storategy これも違いがあるようですが、よくわかりません。とりあえず
Okapi BM25 Rankを選択します。 - Lexicon
ejSplitterを選択します。
- Id ここに、
- 3つのインデックスが再度作成されていることを確認します。
- しかし、このままでは少し問題があります。なぜならば新規に作成したインデックスに登録されているオブジェクト(コンテンツ)の数が
0だからです。新規に作成したインデックスは明示的にインデックスの再構築を行なう必要があります。インデックスを再作成するために、3つのインデックスをチェックし、Reindexボタンをクリックします。すると、下記のようにオブジェクトが登録されます。
- 最後に、Plone Siteにアクセスして、右上の検索ボックスから検索を実行し、日本語でも正常に検索できることを確認します。 今後は、Plone上でコンテンツを登録/変更/削除すると、自動的にインデックスは更新されるので、正しく検索を実行することができます。