Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Dynamics CRM】【Azure】関連性検索(プレビュー機能)を試してみた

Dynamics CRMプレビュー機能で面白そうな機能「関連性検索」が出ていましたので、試してみました。

関連性検索?

あまり聞きなれない感じですが、関連性検索とは以下のようなものらしいです。

関連性検索は、複数のエンティティにまたがるすばやく包括的な結果を、関連性の順に並び替えられた単一のリストに表示します。CRM​​ 検索パフォーマンスを促進するため、Microsoft Azure を装備した Microsoft Dynamics CRM の外部の専用の検索サービスを使用します。

引用元:https://www.microsoft.com/ja-jp/dynamics/crm-customer-center/use-relevance-search-for-faster-comprehensive-search-results.aspx

よくわからないですね。

そもそもDynamics CRMでは以下のように様々な検索を提供しています。

・一覧画面で利用できる「簡易検索」

・複雑な条件を設定できる「高度な検索」

・複数のエンティティを一括で検索できる「グローバル検索」

ただ、これは各エンティティ独立して検索しているもので、SharePointの検索センターのように網羅的にはできませんでしたし、

検索語句の曖昧性や重みづけ(関連度)による表示順の制御もありません。

それが、この機能を導入することで以下のような感じのメリットをもたらすようです。

関連性検索は、次の拡張機能と利点をもたらします。

・外部インデックスと Azure 検索テクノロジーでパフォーマンスを向上します。

・エンティティのすべてのフィールドの検索する語句との一致を検索します。 一致には、“stream”、“streaming”、または “streamed” などの語尾変化のある単語が含まれる場合があります。

・検索可能なすべてのエンティティからの結果を、一致した単語の数またはテキスト内での近接性などの要素に基づき、関連性の順に並び替えられた単一のリスト返します。>

・一致は結果のリストで強調表示されます。

引用元:https://technet.microsoft.com/ja-jp/library/mt723654.aspx

一応以下のような感じで検索結果が提供されます。検索エンジンライクに表示されるのがいいですね。

f:id:sugimomoto:20161011222228p:plain

正直なところ、サンプルデータレベルですと、あまりメリットを感じきれません。ここはやはり実データレベルで試してこそ、わかりやすいのかなと思います。

個人的には、サポート関係業務でナレッジや過去の問い合わせなどを一括で調べ上げたいときに使えるかな、という印象です。

アーキテクチャ

内部的にはAzureの各PaaSを利用していますが、機能を使うだけですと、特に意識する必要はありません。

今のところ何か課金を求められることや、サブスクリプションが必要ということもなさそうです。

メインのモジュールはAzure Searchになります。

Dynamics CRMからIndexとして指定された項目がService Busを通じて、連携サービスに渡されて、Azure Searchに格納されていくみたいです。

f:id:sugimomoto:20161011224514p:plain

最終的にDynamics CRM上からAzure SearchにRequestが行われて、検索結果が返ってくるようですね。

それを考えると、検索性能はすべてAzure Searchに依存する気もするので、Azure Searchのアップデートがあれば、そのまま関連性検索にも影響する感じですかね。

設定手順

実際の設定手順は以下の通りです。

まず、プレビュー機能の有効化をシステム設定から行います。

f:id:sugimomoto:20161011222113p:plain

f:id:sugimomoto:20161011222141p:plain

その後、システムのカスタマイズから「関連性検索の構成」をクリックし、対象とするエンティティを決定します。

f:id:sugimomoto:20161011222150p:plain

f:id:sugimomoto:20161011222155p:plain

エンティティは自由に選べますが、対象にできる項目の上限が1000までになっています。

f:id:sugimomoto:20161013214734p:plain

対象項目の設定は、簡易検索に依存します。

f:id:sugimomoto:20161011222200p:plain

f:id:sugimomoto:20161011222206p:plain

あと、エンティティの管理プロパティに「外部検索インデックスとの同期の有効化が可能」というものがあります。

標準でTrueみたいですが。

f:id:sugimomoto:20161011222211p:plain

f:id:sugimomoto:20161011222218p:plain

以上で設定は完了です。

実際に検索してみた

関連性検索を使う場合は、一度グローバル検索を表示してから、「関連性検索の使用」をクリックする必要があります。

f:id:sugimomoto:20161011222222p:plain

「サービス」で検索してみると、以下のようにエンティティを横断した形で結果が表示されました。

f:id:sugimomoto:20161011222228p:plain

また、対象エンティティを限定して、かつ関連した活動のみを検索対象とすることもできるみたいです。

f:id:sugimomoto:20161011222241p:plain

サポート案件とその回答を行ったメールの文面、活動記録などを中心に検索する、みたいなシナリオが描けそうです。

注意点

非同期でAzure Searchのストレージに格納されるため、格納されたデータが検索結果に表示されるまで最大15分ほど、また初期設定時には平均で1時間ほど反映にかかるようです。

なお、検索やオプションセットフィールドが検索対象にできないみたいです。検索はしょうがない気がしますが、オプションセットは要注意ですね。

参考

Azure Search関連の参考

blog.shibayan.jp

Azure Search ちょっとさわってみたbuchizo.wordpress.com