しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Search がアップデートされて日本語などに対応した話

リリースされてから暫く動きの無かった Azure Search ですが、本日新しい API がリリースされて日本語を含む 27 の言語への対応と新ポータルでの強化、対応リージョンの追加が行われました。

詳細は公式のブログを見てもらうのが一番早いです。

Azure Search Updates: Multilanguage, Azure Portal Index Management & More! | Microsoft Azure Blog

さて、既に何回か Azure Search について書いてきましたが、今回は正式に日本語用のアナライザーが追加されたので、やっと実際に使えるレベルになったかなと思います。

折角なので個別に見ていくことにします。

日本語対応

日本語のアナライザーについては MSDN に書いてありましたので、日本語の部分だけ引っ張ってきました。

Uses morphological analysis

Normalizes common katakana spelling variations

Light stopwords/stoptags removal

Character width-normalization

Lemmatization - reduces inflected adjectives and verbs to their base form

Language support (Azure Search REST API)

これまでは n-gram が使われていたみたいですが、やっと形態素解析を使えるようになったみたいです。他にも半角全角の正規化とかしてくれるみたいですね。

REST API 的にはインデックスを作る時に analyzer を指定すればいいみたいです。*1

Create Index (Azure Search API)

日本語のアナライザーは ja.lucene という名前なので、Lucene か Elasticsearch で用意されているものを使っているのかもしれません。*2

まだ RedDog.Search が新しい API に対応していなかったので、ソースを弄ってちょっと試してみました。ja.lucene をアナライザーに指定したインデックスを作成し、後は RedDog.Search.Portal から試します。

ちなみに投入したデータはこんな感じです。

f:id:shiba-yan:20141107232513p:plain

本当に形態素解析が使われているのか確認するために、クエリとして「京都」を指定してみました。

f:id:shiba-yan:20141107232749p:plain

見事にヒットしませんでした。どのように分かち書きされているのかは分かりませんが、n-gram であるような「東京」と「京都」に分割されることなく「東京都」と扱われているのでしょう。

ちょっと調子に乗って他のパターンでも試してみました。

f:id:shiba-yan:20141107231229p:plain

確かにカタカナの半角全角に関しては正規化されている感じです。

ちょっと意地悪な感じですが、全角アルファベットを入れて試しました。結果としては、半角アルファベットのクエリでちゃんとヒットしました。

f:id:shiba-yan:20141107232301p:plain

普通にありものを使ってると思われますが、割と使い物になる気がしてきました。

新ポータルでの強化

これまでは REST API を使わないと作成できなかったインデックスを、新ポータルを使ってとても簡単に作れるようになりました。アナライザーは指定できないのだけが残念です。

f:id:shiba-yan:20141107221431p:plain

フィールドの属性も一目で分かるので、これは素晴らしいアップデートだと思います。

f:id:shiba-yan:20141107222150p:plain

リージョンの追加

新しく North Central US と South Central US で Azure Search が使えるようになったらしいです。

US は東西南北の全てで使えるようになりましたが、それ以外は北ヨーロッパと東南アジアという状態なので、日本からはとても使いにくい位置にしかデプロイされていません。

日本語対応のタイミングなので、東日本か西日本にデプロイして欲しかったですね。

*1:フィールドごとに設定できる

*2:良く分かってないです