リリースされてから暫く動きの無かった 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 から試します。
ちなみに投入したデータはこんな感じです。
本当に形態素解析が使われているのか確認するために、クエリとして「京都」を指定してみました。
見事にヒットしませんでした。どのように分かち書きされているのかは分かりませんが、n-gram であるような「東京」と「京都」に分割されることなく「東京都」と扱われているのでしょう。
ちょっと調子に乗って他のパターンでも試してみました。
確かにカタカナの半角全角に関しては正規化されている感じです。
ちょっと意地悪な感じですが、全角アルファベットを入れて試しました。結果としては、半角アルファベットのクエリでちゃんとヒットしました。
普通にありものを使ってると思われますが、割と使い物になる気がしてきました。
新ポータルでの強化
これまでは REST API を使わないと作成できなかったインデックスを、新ポータルを使ってとても簡単に作れるようになりました。アナライザーは指定できないのだけが残念です。
フィールドの属性も一目で分かるので、これは素晴らしいアップデートだと思います。
リージョンの追加
新しく North Central US と South Central US で Azure Search が使えるようになったらしいです。
US は東西南北の全てで使えるようになりましたが、それ以外は北ヨーロッパと東南アジアという状態なので、日本からはとても使いにくい位置にしかデプロイされていません。
日本語対応のタイミングなので、東日本か西日本にデプロイして欲しかったですね。