CJKSplitterの利用 [Plone.3.3]

デフォルトでは日本語検索ができない。日本語検索を有効にするには、日本語用 Splitter を導入する必要がある。ここでは CJKSplitter 0.7.3 を用いるものとする。公開情報のみであれば、Googleに任せるのも良いかもしれない。

CJKSplitterのインストール

CJKSplitterのインストール

$PLONE_INSTANCE : /usr/local/Plone/zinstance (Plone のインスタンス)

CJKSplitter を http://www.zope.org/Members/panjunyong/CJKSplitter よりダウンロードし解凍する。デフォルトではカタカナが検索できないため、CJKSpliter.py を2箇所、以下のように修正する。

- \u3040-\u309f
+ \u3040-\u30ff

修正後 cjksplitter-0_7_3-eng.tgz として圧縮し、開発用ソースディレクトリに格納する。

mv cjksplitter-0_7_3-eng.tgz $PLONE_INSTANCE/src/

次にインスタンス内の buildout.cfg を設定する。

  [productdistros]
   :
  urls =
        :
+     src/cjksplitter-0_7_3-eng.tgz

最後に設定を反映する。

# bin/buildout
# bin/plonectl stop; bin/plonectl start

 

CJKSplitterの設定

日本語検索用辞書の作成

ZMI で Plone のルートの portal_catalog を開く。ここに Add ZCTextIndex Lexicon を追加する。

Id : CJKSplitter
Title :
Case Normalizer : Unicode Case Normalizer
  (大文字小文字を区別しない)
Stop Words : Don't remove stop words
  (一般的な単語と、1文字だけの単語も検索に含める)
Word Splitter : CJK Splitter
  (利用するスプリッタ)

日本語検索用カタログの作成

portal_catalog の Indexes タブを開き、以下の3項目を削除する。

Description
SearchableText
Title

次に削除した3項目を CJKSplitter で検索できるようにする。ZCTextIndex を追加する。

  • Description
 Id : Description
 Indexed attributes : 
 Ranking Strategy : Okapi BM25 Rank
 Lexicon : CJKSplitter
  • SearchableText
Id : SearchableText
Indexed attributes : 
Ranking Strategy : Okapi BM25 Rank
Lexicon : CJKSplitter
  • Title
Id : Title
Indexed attributes : 
Ranking Strategy : Okapi BM25 Rank
Lexicon : CJKSplitter

カタログのアップデート

portal_catalog の Advanced タブを開き、Update Catalog を実行することで、インデックスが再作成される。最後に、Plone 上で日本語検索を行い、確認すれば完了。