CJK言語のためのDiscourse検索の最適化

:bookmark: このガイドでは、サイト検索における中国語、日本語、韓国語(CJK)言語への対応を改善するために、Discourse の設定を調整する方法を説明します。

:person_raising_hand: 必要なユーザーレベル: 管理者

Discourse のデフォルト設定は、CJK(中国語、日本語、韓国語)言語にとって最適でない場合があります。ただし、現在、サイトのロケールが CJK 言語(日本語、簡体字中国語、繁体字中国語)に設定されている場合、Discourse はこれらの設定の多くを自動的に調整します。このガイドでは、自動的に設定される内容と、引き続き手動で調整する必要がある内容について説明します。

自動ロケールデフォルト値

サイトのデフォルトロケールが jazh_CN、または zh_TW に設定されている場合、次の設定が自動的に調整されます。

設定名 デフォルト値 CJK ロケールでのデフォルト値
min_search_term_length 3 1(ko にも適用)
min_post_length 20 8
min_first_post_length 20 8
min_personal_message_post_length 10 3
body_min_entropy 7 3
min_topic_title_length 15 6
title_min_entropy 10 3
min_title_similar_length 10 4
allow_uppercase_posts false true(ja のみ)
title_prettify true false

サイトがこれらのロケールのいずれかを使用している場合、通常、これらの設定を変更する必要はありません。これらはすでに CJK 向けに最適化されています。

手動での調整

韓国語ロケール

韓国語 (ko) は、min_search_term_length の自動ロケールデフォルト値のみが適用されます。サイトで韓国語ロケールを使用している場合は、上記に記載されているその他の設定を同様の値に手動で調整する必要があります。

CJK コンテンツを含む多言語または非 CJK ロケールのサイト

サイトのデフォルトロケールが CJK 言語ではないが、かなりの数の CJK 話者がいる場合は、これらの設定を手動で調整する必要があります。

  • min_search_term_length1 または 2 に設定します — CJK のキーワードは 1 文字または 2 文字の長さになることがあります
  • min_post_length を約 8 に設定します
  • body_min_entropy を約 3 に設定します — CJK 言語では繰り返しが多く意味を持つため、これを高く設定しすぎると「意味のない投稿」エラーが発生する可能性があります
  • min_topic_title_length を約 6 に設定します
  • title_min_entropy を約 3 に設定します
  • min_title_similar_length を約 4 に設定します
  • allow_uppercase_posts を有効にします — トピックタイトルの大文字・小文字を分析する際に、Discourse が CJK 文字を認識できず、エラーを引き起こす可能性があります
  • title_prettify を無効にします — タイトル整形ルールはラテン文字用に設計されており、CJK テキストではうまく機能しない可能性があります

検索トークン化

検索の精度を向上させるために、Discourse はオプションの CJK 固有のトークン化設定を提供しています。

  • search_tokenize_chinese — 中国語テキストのセグメンテーションを有効にして、検索結果を改善します
  • search_tokenize_japanese — 日本語テキストのセグメンテーションを有効にして、検索結果を改善します

これらはデフォルトでは無効になっており、管理者の検索設定で有効にできます。

検索問題のトラブルシューティング

これらの変更を行った後に検索機能で問題が発生した場合は、データベースの再インデックスが必要になることがあります。実行方法は次のとおりです。

  1. Discourse Docker インストールディレクトリに入ります。
  2. 次のコマンドを実行して、アプリコンテナにアクセスします。
    ./launcher enter app
    
  3. コンテナに入ったら、再インデックスコマンドを実行します。
    rake search:reindex
    

再インデックス後、コンテンツを効果的に検索できるようになるはずです。

「いいね!」 8