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 による あいまい分析 が出来れば真の意味で日本語対応が完了するので是非! というところですね。