ServiceNow – 日本語の検索性を向上させる方法 ~トークナイザーとストップワード~

運用

ServiceNowでリストやグローバル検索を使用しているときに、なぜか日本語のナレッジ記事やカタログアイテムが検索されない……。
そういったことに悩まされたご経験はないでしょうか?

これは、日本語でText Index(テキストインデックス)の設定を正しく行えていないことが原因です。

この記事では、Text Indexの設定を正しく行い、今まで検索できなかったような文字列を正しく検索できるようにする方法を共有したいと思います。

ServiceNowで利用可能な検索エンジン

ServcieNowは、二つの検索エンジンを使用して検索処理を行っています。

  • Zing検索エンジン(無償)
  • AI Search(有償)

Zing検索エンジンは、ServiceNowのデフォルトで使用されている検索エンジンです。
自動的にナレッジ記事などの単語を、言語によって「スペース区切り」または「単一の文字」に分割して、テキストインデックスというものを作成します。

AI Searchは、ServiceNow以外の他社サービスと連携し外部ソースの検索が可能になっています。
Service Portal、Now Mobile、App Engineなどの、Now Platform以外の検索処理に一部使われているものもあります。

今回は、Zing検索エンジンの検索性を向上させる方法を解説します。

デフォルトの検索性の確認

実際に検索性を向上させる前に、デフォルトの検索性がどうなっているか、サンプルを見ておきましょう。
画像の例では「サーバー」で検索しています。

Service Portal – Knolwdge


サーバーの証明書発行手順に関する記事が2件ヒットしているのがわかると思います。
次に、「サーバーの証明書」で検索してみました。

Service Portal – Knoledge

「サーバー証明書発行手順」のナレッジ記事が表示されていませんね。
今、Zing検索エンジンでは日本語のゆらぎに対応できず、完全一致の検索結果のみを返すようになっていることがわかります。

では、実際にトークナイザーを有効にして、ストップワードを登録していきましょう。

日本語トークナイザーの有効化

メニューから、システム定義 > 辞書を開きます。
検索性を向上させたいテーブルを検索します。タイプがコレクションになっているレコードを開きます。

System Definition > Dictionary

画面最下部までスクロールし、関連リストの属性タブを開きます。
新規をクリックし、新しくレコードを作成します。

属性「Text index tokenizer language」を指定します。
値は「ja」と入力します。画像のように入力出来たら送信しましょう。

sys_schema_attribute_m2m – New Record

トークナイザーの設定は以上で完了です!

ストップワードの設定

トークナイザーの設定が完了したら、次はストップワードを設定しましょう。

ストップワードとは、「て」「に」「を」「は」「です」「ます」などの助詞や助動詞を処理対象外とした単語です。
ServiceNowには、このストップワードを設定するテーブルがあります。

メニューから、システム定義 > テキストインデックスのストップワードを開きます。

System Definition – Text Index Stop Words

デフォルトでは英語のストップワードしか入力されていません。
個別で登録する場合は新規をクリックして登録したいワードを入力すればいいのですが、頻出するストップワードを一つ一つ登録するのはかなり手間です……。

代表的なストップワードをExcelファイルに落としています。
インポートするだけで日本語の単語登録ができるので、ぜひ有効活用してみてください。

  • あそこ
  • あっ
  • あの
  • あのかた
  • あの人
  • あり
  • あります
  • ある
  • あれ
  • いう
  • います
  • いる
  • うち
  • および
  • おり
  • おります
  • かつて
  • から
  • ここ
  • こちら
  • こと
  • この
  • これ
  • これら
  • さらに
  • しかし
  • する
  • せる
  • そこ
  • そして
  • その
  • その後
  • それ
  • それぞれ
  • それで
  • ただし
  • たち
  • ため
  • たり
  • だっ
  • だれ
  • でき
  • できる
  • です
  • では
  • でも
  • という
  • といった
  • とき
  • ところ
  • として
  • とともに
  • とも
  • と共に
  • どこ
  • どの
  • ない
  • なお
  • なかっ
  • ながら
  • なく
  • なっ
  • など
  • なに
  • なら
  • なり
  • なる
  • なん
  • において
  • における
  • について
  • にて
  • によって
  • により
  • による
  • に対して
  • に対する
  • に関する
  • ので
  • のみ
  • ほか
  • ほとんど
  • ほど
  • ます
  • また
  • または
  • まで
  • もの
  • ものの
  • よう
  • より
  • られ
  • られる
  • れる
  • 及び
  • 彼女
  • 我々
  • 特に
  • 私達
  • 貴方
  • 貴方方

一通り登録が終わったらストップワードの設定は完了です!

テキストインデックスの再生成

テキストインデックスを再生成することで、変更を反映できます。
トークナイザーとストップワードの設定が終わったら、必ずテキストインデックスを再生成しましょう。

メニューから、システム定義 > テキストインデックスを開きます。
トークナイザーの有効化で、変更を加えたテーブルを検索し、レコードを開きます

System Definition > Text Index

関連リンクの、テキストインデックスの再生成をクリックします。
再生成が完了した際に、メールで通知するかを確認するポップアップが表示されます。
お好みの設定でOKをクリックします。

ts_index_name – kb_knowledge

あとはテキストインデックスの再生成を待つのみです!

ちなみに、テキストインデックスの再生成が完了したかどうかを確認する方法ですが、メニューから、システムポリシー > Events > イベントログを開きます。
「名前」は次の値で始まる「text_index.」で検索すると、テキストインデックスに関するログのみフィルタリングできます。

text_index.allがテキストインデックスの再生成が始まった合図です。
text_index.completeがテキストインデックスの再生成が完了した合図です。
パラメータ1に表示されているテーブル名が、テキストインデックスの再生成を行っている、または完了したテーブルです。

※sysmetadataなど、テーブルによっては再生成にn時間単位を要するものもあるのでご注意ください。

sysevent

テキストインデックスの再生成が完了したら、トークナイザーとストップワードに関わる日本語の検索性の向上対応は完了です!

対応後の検索性の確認

では、デフォルトの検索性の確認で検索できなかった「サーバー証明書発行手順」が、実際に検索できるかを確認してみましょう。

「サーバーの証明書」で検索してみると……

うまく検索結果に表示されていますね!

まとめ

今回は、トークナイザーとストップワードを設定して検索性を向上させる方法をご紹介しました。
ポイントとしては以下の通りになります。

  • 検索性を向上させたいテーブルの属性にトークナイザーを設定する
  • 日本語のゆらぎを極力削るためにストップワードを設定する
  • 上二つの設定を行った後は必ずテキストインデックスの再生成を行う

これだけでもかなり変わってくると思いますが、検索性を向上させる方法はまだまだあります!
長くなってしまうので、それはまた別の記事で紹介しますね!

コメント

タイトルとURLをコピーしました