Fessのカナ表記と長音記号の揺れを検索時に吸収する

Fessの日本語検索で、カナの一部の表記揺れと、長音記号の代わりに使われたダッシュを吸収する変更が入りました。「ラヴ」と「ラブ」、「サ―バ-」と「サーバー」のような違いを検索しやすくします。

今回増えた正規化

標準のtitle、content、important_contentで使う辞書は、これまでもひらがなや小書き文字、半角カナを大きな全角カタカナへ変換していました。今回、ゐ・ゑ、小さいヵ・ヶなど、変換されず残っていた文字を補っています。

ヴ、ゔ、半角のヴ、ウやうに結合濁点を付けた表記も、ブなどに統一します。*_jaフィールドの日本語辞書にもヴ系の変換を追加しますが、形態素解析に必要なひらがなと小書き文字はそのまま保持します。

カナの後のダッシュを長音として扱う

新しい文字フィルターで、カナに続く―、−、全角の-などをーへ変換します。対象は標準のインデックス用・検索用アナライザーです。新規インデックスでは標準設定として適用し、機能を有効にする追加スイッチはありません。

ASCIIの-や、漢字・英数字の後のダッシュは対象にしません。テスト-ケース、東京-大阪、2026−10−02を一律に長音へ変換しないためです。また、複合語の形態素解析を崩す可能性があるため、この長音フィルターはjapanese_analyzerには追加しません。

既存環境へ反映する

既存インデックスの解析設定と辞書は更新だけでは変わりません。メンテナンスの再インデックスで「辞書のリセット」を選び、新しい設定と辞書で作り直す必要があります。

辞書のリセットは管理画面で加えたmapping.txtやja/mapping.txtの編集も上書きします。独自の変更がある環境では、内容を保存してから再構築してください。

今回の変更は「取り扱い」と「取扱い」、あるいは任意の長音の有無を全て吸収する同義語辞書の追加ではありません。日本語フィールド全体のひらがな・カタカナ統一も行いません。適用後は実際の文書を使い、ヒット数やハイライト、複合語への影響を確認するとよさそうです。

利用できるバージョン

Fess 15.9.0に含まれる予定の機能になります。現時点では、まだ、リリースしていないので、今後のテストで変更される可能性もあります。

関連PR

FessのOIDCプラグインでissuerとIDトークンの検証条件を確認する

FessのOIDCプラグインに、IDトークンの対象クライアントと有効期限を確認する修正がマージされました。15.9への移行では、プラグイン導入に加え、プロバイダーの設定が新しい検証条件を満たすか確認します。

issuerを明示する

新しい oic.issuer は任意設定で、初期値は空文字です。未設定では iss の検証を省略し、最初のログイン時に警告を出します。プロバイダーのDiscovery文書の issuer をそのまま system.properties に指定してください。末尾のスラッシュも区別されます。この項目は管理画面の全般設定にはありません。

sso.type=oic
oic.issuer=https://op.example.com
oic.token.server.url=https://op.example.com/token
oic.client.id=your-client-id

上記URLは例です。既存の認可URL、クライアントシークレット、スコープなどもプロバイダーに合わせて設定し、修正を含む fess-sso-oidc を導入したFessでログインを確認します。

IDトークンの検証条件

aud に設定した oic.client.id が含まれる必要があります。クライアントIDが空では受け付けません。azp があればクライアントIDと一致する必要があり、複数のaudienceを持つトークンにはazpが必須です。

exp は数値で必須です。現在時刻が exp + 300秒 より前なら受け付けます。300秒は固定の許容差で設定項目ではありません。issuerを指定した場合はissが完全一致する必要があります。ログイン失敗時は画面に一般的なSSOエラー、ログに検証理由が記録されます。設定照合と時刻同期で原因を切り分けます。

HTTPSと残る制限

トークンエンドポイントはHTTPSが必須です。HTTPは localhost、127.0.0.0/8のリテラルIPv4アドレス、::1 に限ります。社内ホスト名や別ホストへのHTTP接続を許可するスイッチはありません。従来その構成を使っていた環境では、HTTPSへの変更が必要です。

JWT署名の暗号的な検証、nonce、PKCEは今回も実装されていません。IDトークンをブラウザから受け取るのではなく、Fessがプロバイダーのトークンエンドポイントから直接取得する設計で、TLSのサーバー検証に依存します。クレーム検証の追加を、署名検証まで実装された変更と混同しないでください。

関連PR

FessでAmazon BedrockをRAGと埋め込みに利用する設定

Fess 15.9向けのドキュメントに、Amazon BedrockのLLM・埋め込みプロバイダーの設定が追加されました。fess-llm-bedrockを使い、チャットはConverse API、文書チャンクの埋め込みはInvokeModel APIで実行します。

前提とインストール

プラグインはFess 15.9以降、Java 21以降を対象とします。利用リージョンでモデルへアクセスできるAWSアカウントと、モデル呼び出し用の認証情報が必要です。Fessのバージョンに合うプラグインを配置して再起動します。現時点の最新リリース15.8.0へそのまま適用する手順ではありません。

チャットの設定

管理画面の「システム」>「全般」、またはsystem.propertiesでプロバイダーを選びます。

rag.llm.name=bedrock

fess_config.propertiesではチャットを有効にし、リージョンとモデルを設定して再起動します。

rag.chat.enabled=true
rag.llm.bedrock.region=us-east-1
rag.llm.bedrock.model=us.amazon.nova-2-lite-v1:0

チャット自体の初期値は無効です。Bedrock側のリージョン初期値はus-east-1、モデルは上記のNova 2 Liteの米国クロスリージョン推論プロファイルです。モデルとリージョンは実際に利用できる組み合わせへ変更してください。リージョンはこの設定から取得し、AWS_REGIONは参照しません。

APIキーの初期値は空で、その場合はAWS認証情報を解決しSigV4署名を使います。IAMロールかFess実行ユーザーの共有認証情報を使う構成を検討できます。必要な権限はbedrock:InvokeModelとbedrock:InvokeModelWithResponseStreamです。推論プロファイルを使う場合は、ルーティング先のモデルにも権限が必要になります。IAM Identity CenterのSSOプロファイルには対応しません。

文書チャンクの埋め込み

こちらはsystem.propertiesに設定します。チャットの設定ファイルとは異なり、fess_config.propertiesへ書いても読み込まれません。

content_chunker.enabled=true
content_chunker.embedding.name=bedrock
content_chunker.embedding.dimension=1024
content_chunker.embedding.bedrock.region=us-east-1
content_chunker.embedding.bedrock.model=amazon.titan-embed-text-v2:0

Bedrock埋め込みのモデル初期値はTitan Text Embeddings V2です。Titanは256・512・1024次元を利用できます。Cohere Embed v3は1024次元、v4は256・512・1024・1536次元で、モデルが返せる次元数と設定を合わせる必要があります。埋め込みは子JVMで実行するため、WebプロセスだけのJVM認証情報では届かない場合があります。

制限と運用上の注意

Cohere v3は1テキスト2048文字までで、プラグインは自動短縮・分割しません。ストリーミングは開始前のリクエストを再試行できますが、回答が流れ始めた後の失敗は再試行しません。

APIキーはチャット用ならfess_config.properties、埋め込み用ならsystem.propertiesの専用キーで指定すると管理画面のシステム情報でマスクします。環境変数やJVMシステムプロパティ経由のキーはそこでマスクされないため、長期キーをその方法で渡す運用は避けてください。fess-storage-s3と併用する場合は、AWS SDKの版を合わせるためプラグインも一緒に更新します。

利用できるバージョン

Fess 15.9.0に含まれる予定の機能になります。現時点では、まだ、リリースしていないので、今後のテストで変更される可能性もあります。

関連PR