ソフトウェアエンジニア現役続行

雑多なことを綴ります

Confluence で lucene-kuromoji のユーザー辞書を使えるようにする

注意

以下の内容はConfluence 5.5.6からConfluenceのソースコードに反映されました(ブログの内容とは少し違う形で)。Confluence 5.5.6以降でユーザー辞書を使う方法はユーザー辞書を使って検索精度を向上させる方法を参照してください。

Confluence のカスタム日本語は lucene-kuromoji を使っている

Confluence の検索機能は Lucene を使っています。Lucene の日本語プラグイン lucene-kuromoji も搭載されていて、これを使うには Confluence の管理画面でインデックス作成言語を「カスタム日本語」に設定します。

ユーザー辞書による lucene-kuromoji の検索精度向上

lucene-kuromoji は内部で持っている辞書を使って分かち書きを行って検索インデックスを作成するため、辞書にない単語は正しく分かち書きをすることができません。例えば Confluence で「マイグレーションツール」という単語の含まれたページを作成したとき、これを「マイグレーション」や「ツール」という言葉で検索してもページがヒットしません。これは「マイグレーションツール」が「マイグレーション」と「ツール」の合成語だという情報が lucene-kuromoji の辞書に存在しないことが原因です。この場合、ユーザー辞書でこの合成語を正しく登録をすることで問題を解決することができます。

Confluence で lucene-kuromoji のユーザー辞書を使えるようにする

現状、Confluence ではユーザー辞書が使えるようになっていませんが、ソースコードが公開されているので、ソースコードを修正してユーザー辞書を使えるようにしてみました。手順は以下のとおりです:

  1. Confluence のソースコード をダウンロードしてローカルに展開する
  2. Gist にアップロードしているパッチ を適用する
  3. build.sh または build.dat でビルドする (*)
  4. ユーザー辞書ファイルを <confluence-home>/config/userdict_ja.txt に置く
  5. ビルドされた confluence.war をサーブレットにデプロイする

(*) ビルド方法は Building Confluence From Source Code に記載されていますが、そのとおりにビルドしても失敗する場合は、Confluence のソースコードをビルドする方法 で解決するかも知れません。

ユーザー辞書ファイルでは、例えば以下のように「マイグレーションツール」を合成語として単語登録します。

$ cat userdict_ja.txt 
マイグレーションツール,マイグレーション ツール,マイグレーション ツール,カスタム名詞

そして Confluence 管理画面からインデックスの再構築を行うと、以下のように「マイグレーション」や「ツール」でヒットするようになりました。

f:id:Oswald:20140504152436j:plain