とある技術の開発日記

Diary of irregular phrase programmer

Webサイトを使って簡単に始めるAzureSearch!!

この記事はAzure Advent Calendar 2014の11日目の記事になります。

AzureSearchという機能が2014年8月21日に発表されてから*14ケ月が経っているのですが、未だに触れていなかったのでこの機会に触ってみました。

実際には4ケ月経って何かしらの変化があるかと思ったのですが特に目立った変更点もないので、今回はプレビューポータルが日本語になったし、ちょっと触ってみたい方向けのライトな記事になります。

AzureSearchとは

簡単に言うと、オレオレ検索エンジンが簡単に作れるサービスです。公式サイトではSearch-as-a-service*2と表記してあります。検索エンジンと言っても。検索対象のデータは自分自身でセットする必要があります。

クラウドならではの特徴としてスケールアウトが簡単に行えるのが一番の特徴ではないでしょうか。お試しで使うだけなら無料でも使えますが、有料プランになるとユニット単位の時間課金になります。

f:id:airish9:20141210210206j:plain

料金に関する詳細

さっそく使ってみる

今回、使用するにあたってNo1氏としばやん氏の素晴らしいエントリを参考にしています。

Azure Search ちょっとさわってみた « ブチザッキ

Azure Search を使ってツイートログ検索を実装してみた - しばやん雑記

基本的にこの当時と変わりは無いのですが、プレビューポータルが日本語に対応したので英語が苦手な方でも抵抗なく作れるようになっています。

また、後ほど記述しますがRedDog周りのアップデートで当時に比べて楽になっている部分もあります。

Searchの作成とインデックスの作成

1.まずは左下の「新規」からSearchを選択

f:id:airish9:20141210211422j:plain

2.名称、リージョン、金額プラン等々を入力すると数分程度でAzureSearchが利用できます。

3.インデックスを作成してデータを投入

この辺りはREST APIを叩いたり、RedDog.Searchを使用しても良いのですが、コーディングしたくない方はクイックスタートガイドにあるようにFiddlerを使って試してみるのも良いと思います。(自分の好きなレイアウトを作ろうと思うと大変でしょうが…)

クイックスタートはスクリーンショット付きで細かく記述してあるので参考にしてみてください。

Azure Search の使用

RedDog.Searchのanalyzer対応

しばやん先生のおかげでRedDog.Searchでインデックス作成時にanalyzerを指定できるようになりました。

reddog-io/RedDog.Search · GitHub

日本語の列を作るときは以下のようにすると日本語対応の列が作成する事ができます。(この場合はcontent列に日本語を指定している)

await client.CreateIndexAsync(new Index("tweets")
    .WithStringField("id", p => p.IsKey().IsRetrievable())
    .WithStringField("content", p => p.IsSearchable().IsRetrievable().Analyzer(Analyzers.Japanese))
    .WithDateTimeField("createdOn", p => p.IsRetrievable().IsSortable())

RedDog.Search.PortalがSiteExtensionで利用可能に

RedDog.Searchとは別にRedDog.Search.PortalというAzureSearchを操作できるポータル画面がWebサイトで提供されていましたが。いつの間にかWebサイトのSiteExtensionに追加されていました。

reddog-io/RedDog.Search.Portal · GitHub

1.空のWebサイトを作った後に拡張機能の追加を選択*

f:id:airish9:20141210221850j:plain

f:id:airish9:20141210222409j:plain

2.アプリケーション設定を追加

RedDog.SearchPotalからAzureSearchの接続に仕様する設定を追加します。
Azure.Search.ServiceNameにAzureSearchのServiceName、Azure.Search.ApiKeyにAzureSearchのキーを設定します。

f:id:airish9:20141210225931j:plain

追加した拡張機能を参照するとRedDog.Search.Portalが表示されます。

f:id:airish9:20141210224136j:plain

f:id:airish9:20141210232018j:plain

RedDogのポータルはAzureポータルからできない事もできます。一例を挙げるとインデックスの列削除やデータの検索等も行う事ができます。

CSVからデータの追加もできるので、Webサイトさえ立ててしまえば非コーダーの方でもAzureSearchが利用できそうですね。