Confluence日本語検索インデックス設定について

Confluenceでは日本語環境向けの検索インデックス言語としてCJK、カスタム日本語を選択することが可能です。
https://ja.confluence.atlassian.com/doc/configuring-indexing-language-150130.html
本記事では、CJKとカスタム日本語における検索の方法の違い、サーバ版のConfluenceにてカスタム日本語を使用した際の検索精度を上げる方法、そして参考情報として設定をお選び頂く際の判断基準についてご説明します。

 

CJKとカスタム日本語の違い

CJKを選択した場合、検索文字列を2文字ずつ分割したうえで検索します。
一方で、カスタム日本語を利用すると、Kuromojiという形態素解析ライブラリを用いて、検索文字列を既知の語彙に基づき分割したうえで検索します。

例えば、「東京都に住んでいます」という文章があった場合、

  • CJKでは「東京」「京都」「都に」「に住」「住ん」「んで」「でい」「いま」「ます」

  • カスタム日本語では「東京都」「に」「住んで」「います」(*)

のように分割され、そのうえでキーワードと照らし合わされるような挙動となります。

(*)カスタム日本語の場合は辞書中の語彙にも依存しますので、実際には異なる形で分割される可能性があります。

 

カスタム日本語にて、ユーザー辞書を使って検索精度を向上させる方法(サーバ/DC版のみ)

カスタム日本語を使用した場合は、上記のように日本語の文法に沿って検索ができるものの、検索できる単語が辞書に含まれる語彙に限られてしまうというデメリットがあります。

例えば「東京特許許可局」のような検索対象文字列を分割するためには、「東京」や「特許」というキーワードをConfluenceが知っている必要があります。少なくとも筆者が本記事の記載時点のサーバ版最新バージョン(6.15.7)で確認する限り、「東京」「特許」というキーワードでは上記のような文字列はヒットさせられません。

もしサーバ版のConfluenceをご利用の場合は、上記のようなケースの検索精度を上げるために、Kuromojiで使用するためのユーザ辞書を用意することで、長い語彙を分割して検索することが可能です。

Confluence で Lucene を利用している場合 (デフォルト)

設定方法は以下の通りです。

  1. インデックス作成言語を「カスタム日本語」に設定します。
  2. user_dict_ja.txt ファイルを以下のフォーマット(カンマ区切り)で作成します。
    東京,特許,許可
  3. 上記ファイルを /shared-home/config/ に配置します。
  4. コンテンツインデックス再作成を行います。

上記の設定により、「東京」「特許」「許可」といったキーワードで「東京特許許可局」のような内容もヒットするようになります。

Confluence で OpenSearch を利用している場合

セルフホスト(あるいは AWS以外)の OpenSearch の場合

設定方法は以下の通りです。

  1. 次のガイドに従って、OpenSearchに "analysis-kuromoji"プラグインをインストールして下さい: Installing plugins 
  2. インデックス作成言語を「カスタム日本語」に設定します。
  3. user_dict_ja.txt ファイルを以下のフォーマット(カンマ区切り)で作成します。
    東京,特許,許可
  4. 上記ファイルを /config/ に配置します。
  5. 次のプロパティを confluence.cfg.xml に追加します:
    <property name="opensearch.custom.dictionary.path">user_dict_ja.txt</property>

    あるいは system property に追加します:
    -Dopensearch.custom.dictionary.path=user_dict_ja.txt 
  6. Confluence ノードを再起動します。
  7. コンテンツインデックス再作成を行います。

Service の場合

設定方法は以下の通りです。

  1. インデックス作成言語を「カスタム日本語」に設定します。
  2. user_dict_ja.txt ファイルを以下のフォーマット(カンマ区切り)で作成します。
    東京,特許,許可
  3. S3 バケットにファイルをアップロードし OpenSearch ドメインにインポートします。こちらのガイドを参照下さい。: Custom packages for Amazon OpenSearch Service - Amazon OpenSearch Service. ※ 次の手順で インポートした パッケージのID を利用しますのでメモして下さい。
  4. 次のプロパティをconfluence.cfg.xml に追加します。:
    <property name="opensearch.custom.dictionary.path">analyzers/<package-id></property>

    あるいは system property に追加します:
    -Dopensearch.custom.dictionary.path=analyzers/<package-id> 
  5. Confluence ノードを再起動します。
  6. コンテンツインデックス再作成を行います。

 

インデックス言語設定の選択基準について

最後に参考として、製品の種類ごとに筆者がお薦めするインデックス言語設定をまとめます。ただ、以下は主観も含みますので、各設定での挙動をご理解の上、運用方法に向いた設定をお選びください。

サーバ版のConfluenceをご利用の場合

CJKは冒頭の例で「京都」がヒットするなど偽陽性が高くなる可能性がありますが、辞書中の語彙に依存せずに検索することができます。そのため、多くの場合CJKをご設定頂くことをお薦めします。

一方で、もしConfluenceのナレッジベースで特定の固有名詞等での検索が重要であり、かつ、辞書ファイルのメンテナンスが運用上可能であれば、カスタム日本語の設定もお薦めします。

クラウド版のConfluenceをご利用の場合

クラウド版ではカスタム日本語での辞書登録を行うことができないので、CJKをご利用頂くことをお薦めします。

本記事のコメントにある通り、クラウド版でも、お客様の管理者の方ご自身でインデックス変更が可能になりました。[Confluence Cloud Admins] 検索言語を再インデックスしましょう! (全エディション) でご設定いただけます。

 

トラブルシューティング

もしもサーバ版にて検索結果が想定通りとならない場合は、以下の方法でインデックスを再構築することで改善できる可能性もありますので、こちらもお試しください。

https://ja.confluence.atlassian.com/confkb/how-to-rebuild-the-content-indexes-from-scratch-on-confluence-server-110035351.html

 

関連リンク

上記のユーザ辞書の機能は、以下の機能要望チケットにより実現されました。

https://jira.atlassian.com/browse/CONFSERVER-33368

4 comments

K_ Yamamoto
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
December 23, 2021

関連する機能リクエスト - Confluence Cloud

管理者でもインデックス作成言語を設定できるようにしてほしいとの改善要望が CONFCLOUD-65935 にて追跡されております。リンク先にて Vote for this issue (この課題に投票) していただくと製品ロードマップの策定時に考慮されますのでご検討ください。詳しくは 新機能の実装ポリシー をご覧ください。また Start watching this issue (この課題をウォッチ) で購読していただくと、進捗があった場合に通知を受け取っていただけます。

Like # people like this
Nobuyuki Mukai
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
March 28, 2024

2024/3/29 追記

現在のサーバ/DC最新版では、CONFSERVER-79991 - Unable to start Confluence with user_dict_ja.txt  の問題により、カスタム日本語を使用すると起動に失敗することが知られております。カスタム日本語ご利用をご希望の方は、上記のチケットの投票またはウォッチをお願いいたします。

Tatsuya Uekusa
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
April 30, 2024

Yamamotoより共有しておりました改善要望(CONFCLOUD-65935)が実現され、管理者でもインデックス作成言語を設定可能になりました。

詳細については、以下のCommunity Blogをご覧ください。

Like # people like this
Nobuyuki Mukai
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 30, 2024

Confluence 9.0 より DC 版で OpenSearch が使用できるようになったことに伴い、設定方法が変更となりましたので記事を更新しました。 

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events