tech.guitarrapc.cóm

Technical updates

SumoLogicで日本語を使ったクエリ検索がしたい

前回までの対応で、SumoLogicでの日本語利用が現実的に可能になってきました。 あとは、検索クエリに日本語を使えるかが鍵ですね。

現在の可能、不可能状況を紹介します。

検索のパターン

SumoLogicで "語句" を検索する際には、2つのロジックがあります。

  • "で囲まずに*を利用した語句のあいまいインデックス検索
  • "で囲まんだ語句のリテラル検索

どのような事か詳細を見てみましょう。

SumoLogicはログをインデックス分析している

SumoLogicは(空白スペース)や-(ハイフン)など特殊文字をもって文章から「語句」をインデックス分析し保持しています。 あるいは、分析した語句のいくつかでグループ化もしています。

つまり、「検索したい語句をSumoLogic検索クエリに入れる =「SumoLogicが分析したインデックスと合致する語句」が存在するかを判定している」という事です。

言語による検索パターンへの対応

英語などの 所謂 Latin 語系

1,2両方のロジックに対応しています。

日本語 2の「"インデックスとして分析された文字列" との完全一致」による分析しか対応できています。 つまり、 日本語でログに対しては * (ワイルドカード) での曖昧分析が出来ないという事です。

※Log Reduceは使えます。

サンプル

例えば、以下のログをSumoLogicに投げた場合

12345 test messages in index-ed line

SumoLogicは次のように、スペース( )やハイフン(-) を利用して分割された各語句をインデックスとして分析し保持します。

12345
test
messages
in
index
ed
-
line

これらのインデックスに対して、検索クエリとしては例えば以下が利用できます。

12345
message*
"messages"

上2つが分析パターンの1、一番舌が分析パターンの2に該当します。

日本語の場合の分析サンプル

では日本語では何ができないかサンプルを見ましょう。例えば以下のメッセージが含まれたログをSumoLogicに取り込みます。

直前に例外がスローされた場所からのスタック トレースの終わり

SumoLogicはスペースを利用して次のようにインデックスとして分析し保持します。

直前に例外がスローされた場所からのスタック
トレースの終わり

日本語は1の*などを利用した分析パターンである[あいまいインデックス検索]ができず、 2のインデックスと完全に一致する語句の合致を利用する[リテラル検索]のみ可能です。

つまりインデックスに対して、検索クエリとしては以下の文字完全一致のみ利用できます。

"直前に例外がスローされた場所からのスタック"
"トレースの終わり"

1の[あいまいインデックス検索]に対応していないため、以下のパターンで検索を試みても結果がないよと言われます。

直前に*

改善予定

バグレポートには挙げており、修正に向けてサポートが動いてくれています。 この1によるあいまい分析が出来れば真の意味で日本語対応が完了するので是非! というところですね。