SlideShare a Scribd company logo
ROOM
J
検索機能は、数多くのアプリケーションでユーザーの主要な操作手法として活用されており、特に全文検索機能には大
きな期待が寄せられています。ユーザーは、普段から Web 検索エンジン、高度な e コマース Web サイト、関連性の高
い検索結果を提供するソーシャル アプリケーション、入力時の検索候補、ファセット ナビゲーション、強調表示などのさま
ざまな機能を、ほぼタイム ラグなしで使用しています。
マイクロソフトは Azure Search の開発にあたって、検索に
関する専門的な知識のない開発者でも優れた検索エクス
ペリエンスをアプリケーションに組み込むことができるようにし
たいと考えました。
強固な検索エクスペリエンスの実現は、テキスト分析やランキングの処理が必要な情報取得用フロントエンドや、スケー
ラビリティや信頼性を管理する必要のある配信システムのフロントエンドのいずれにおいても課題となります。そこで、サー
ビスとしての検索機能を提供することで、これらの課題を自然な形で解決し、開発者がアプリケーションの構築に集中で
きるようにすることを目指しました。
SELECT~LIKE ‘%文字列%’
でもよくないですか?
1. 圧倒的な速度で
2. 高い精度の検索結果を
3. 関連性が高いもの順に
全文検索エンジンである理由
取得することができます
とにかく爆速。
転置インデックス : トークンからドキュメントを引き当てるデータ構造
テキスト解析
インデクシング
Doc# ドキュメント内容
1 Microsoft is introducing SQL
Server
2 Windows Server on Azure
3 Microsoft is introducing
Azure
4 Application programming on
Microsoft Azure
単語(トークン) 含まれるドキュメント
microsoft 1, 3, 4
introducing 1, 3
sql 1
server 1, 2
Windows 2
azure 2, 3, 4
application 4
programming 4
精度が高い
「キング」 ⇒
「バーガーキング」 「ライオンキング」
「Azureでのセキュアネットワーキング」
「京都」⇒
「東京都庁」
「京都観光」
「ダイアモンド」
⇒「ダイヤモンド」もヒット
• 語幹変化
• 見出し語変化
• 同義語展開
• 正規化
• ストップワード除去
• アンチフレージング
• スペルチェック
• クエリサジェスト
• ファセット
検索精度向上のための主要技術・ソリューション
• N-gram
• 形態素解析
ORDER BYではなく関連性(ランキング)によるソート
• クエリとドキュメントの関連性を
評価して結果を並べる
• データベースのORDER BY句に
よる結果ソートとは全く異なる
評価手法
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
インデックス追加・更新 /indexes/<indexname> PUT
インデックス一覧表示 /indexes GET
インデックス統計情報取得 /indexes/<indexname>/stats GET
インデックスの削除 /indexes/<indexname> DELETE
ドキュメント追加・削除 /indexes/<indexname>/docs/index POST
検索 /indexes/<indexname>/docs GET
ドキュメントlookup /indexes/<indexname>/docs/<key> GET
ドキュメント数取得 /indexes/<indexname>/docs/$count GET
サジェスション /indexes/<indexname>/docs/suggest GET
https://<アカウント名>.search.windows.net
{
"@odata.context":
"https://yoichikademo0.search.windows.ne
t/indexes('messages')/$metadata#Collecti
on(Microsoft.Azure.Search.V2015_02_28_Pr
eview.IndexResult)",
"value": [
{ "errorMessage": null, "key": "1",
"status": true, "statusCode": 201 },
{ "errorMessage": null, "key": "2",
"status": true, "statusCode": 201 },
{ "errorMessage": null, "key": "3",
"status": true, "statusCode": 201 }
]
}
/indexes/myindex/docs/suggest
suggesterName=sessionsg
fuzzy
search Azu
/indexes/myindex/docs
facet color
facet size
facet price
search
自分の位置から5キロ以内のドキュメントを検索
/indexes/myindex/docs?...
&search=engineer
&$filter=geo.distance(loc,'P
OINT(-127.21 42)') lt 5
自分の位置からの距離順にソートする
/indexes/myindex/docs?...
&search=engineer
&$orderby=geo.distance(loc,g
eography'POINT(-127.21 42)')
オペレーションログ メトリックスログ
保存
コンテナ
insights-logs-
operationlogs
insights-metrics-
pt1m
内容 インデックス作成
インデクシング
検索クエリ
サジェストクエリ
など
クエリレイテンシー
クエリ数/秒
(QPS)
※分単位
{
"time": "2016-05-07T09:15:24.3901416Z",
"resourceId": "/SUBSCRIPTIONS/87C7C7F9-0C9F-47D1-
A856-1305A0CBFD7A/RESOURCEGROUPS/RG-SEARCH-
DEMO/PROVIDERS/MICROSOFT.SEARCH/SEARCHSERVICES/YOICHIKADE
MO0",
"operationName": "Query.Search",
"operationVersion": "2015-02-28",
"category": "OperationLogs",
"resultType": "Success",
"resultSignature": 200,
"durationMS": 41,
"properties": { "Description" : "GET
/indexes('decodesessions2016')/docs" , "Query" :
"?$top=12&$select=id,title,url,thumbnail,description&api-
version=2015-02-28&search=Azure" , "Documents" : 12,
"IndexName" : "decodesessions2016" }
}
{
"resourceId": "/SUBSCRIPTIONS/87C7C7F9-0C9F-47D1-A856-
1305A0CBFD7A/RESOURCEGROUPS/RG-SEARCH-
DEMO/PROVIDERS/MICROSOFT.SEARCH/SEARCHSERVICES/YOICHIKADEMO0"
,
"metricName": "SearchQueriesPerSecond",
"time": "2016-05-13T13:14:00Z",
"average": 0.05,
"minimum": 0,
"maximum": 2,
"total": 3,
"count": 60,
"timeGrain": "PT1M"
}
収集された検索オペレーション・メトリックスログ
はPower BI連携により簡単に可視化が可能
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
テキスト解析の基盤は
Lucene Core
処理単位はアナライザ
• インデクシング処理時とクエリ処理時実行されるテキスト解析処理
• フィールド単位で設定可能
• カスタムアナライザで独自アナライザの定義が可能
<b>Azure Search</b> allows
you to easily add a robust
search experience
インデックス処理 クエリ処理
文字フィルタ ( Char Filters )
トークナイズ処理の前、文字レベルの加工処理
1アナライザ に0個以上の 文字フィルタを定義可能
トークナイザ ( Tokenizer )
文字列をトークン(単語)に分かち書き方法を定義
1アナライザ に1つのトークナイザを設定可能
トークンフィルタ ( Token Filters )
トークナイズ処理後、トークンに対して加工処理を提供
1アナライザ に0個以上の トークンフィルタを定義可能
a s
文字列をトークンに分かち書き
トークンを小文字化
ストップワードを削除
HtmlStripCharFilter
文字列からHTMLタグを削除
a s
文字列をトークンに分かち書き
トークンを小文字化
ストップワードを削除
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
マイクロソフト自然言語処理(NLP)技術
Lucene Core
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
ドキュメントの
関連性の数値化
(スコアリング)
ランクスコア順に
結果表示
orderby=pricesearch=suface
ソート
条件あり検索開始
ソート順に
結果表示
TF-IDFベース
のスコア
スコアリングプ
ロファイルによ
る加点スコア
Σ
ランク
スコア
Term Frequency Inverse Document Frequency
単語の出現頻度 単語の特徴度(レア度)
https://ja.wikipedia.or
g/wiki/Tf-idf
スコアリング関数設定
filterableなフィールドに対して関数による
ブースト設定が可能
"scoringProfiles": [
{
"name": “genreProfile",
"text": {
"weights": {
"albumTitle": 1.5,
"genre": 5
}
“functions": [ … ]
},
{
"name": “lastupdateProfile,
"functions": [ {
"type": "freshness",
"fieldName": "lastUpdated",
"boost": 2,
"interpolation": "quadratic",
"freshness": {
"boostingDuration": "P365D"
}
}
]
} ],
関数の種類 ブースト基準
freshness 鮮度
magnitude 数値、その範囲
distance 距離
tag タグ
グラフ補間 (interpolation)
Title=“Azure Search Deep
Dive”
Description = Many
applications use search
as the primary interaction
…Microsoft …
LastUpdate= 2016-04-28
Rating = 5
/indexes/myindex/docs?
search= Azure%20Search
& scoringProfile=myScoreProfile
ドキュメント
Σ
TF-IDFベース
のスコア算出
TAG
ブースト
Distance
ブースト
freshness
ブースト
Magnitude
ブースト
スコア値算出
+0.3
0
+0.2
+0.2
+0.5
functionAggregation=
sum (default) | average | minimum |
maximum | firstMatching
プロファイル関数によるブースト値の集約
方法はfunctionAggregationで決定
スコアリング関数
規ス定コアリング
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
Azure Media Indexer
• 自然言語処理(NLP)や音声認識エンジンを駆使して
ビデオコンテンツより字幕用データ(時間やテキスト)
や検索可能にするためのメタデータを抽出する
• 膨大なコンテンツライブラリーカタログ
• 事例: The Washington Post, NASA/JPL, など
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
PID890, Halo 3, Xbox 360 Games
USERID-35, PID890, 2014/12/31T20:21:26, Purchase
uatalog.csv
uatalog.csv
usage1.csv
catalog.csv
Recommendations
Engine
トレーニングされた
レコメンデーション
モデル
レコメンデーションエンジン
Cognitive Service
商品カタログ
購入履歴
DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~
https://aka.ms/build2016captions
http://aka.ms/decode2016search
Y
A
X B
アンケートにご協力ください。
●アンケートに 上記の Session ID のブレイクアウトセッションに
チェックを入れて下さい。
●アンケートはお帰りの際に、受付でご提出ください。
マイクロソフトスペシャルグッズと引換えさせていただきます。
ROOM J
Ask the Speaker のご案内
●本セッションの詳細は、EXPO 会場内
『Ask the Speaker』コーナー
Room A カウンタにてご説明させて
いただきます。是非、お立ち寄りください。
Ask the Speaker
EXPO会場MAP

More Related Content

PDF
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
PDF
DOO-005_裏 Inside Azure ~OSS 視点で理解する、Azure のテクノロジ & アーキテクチャ~
PPTX
Microsoft Azure build & ignight update summary
PPTX
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
PDF
Container x AI
PDF
20180922 jazug8 cosmosdb_search
PPTX
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
PDF
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
DOO-005_裏 Inside Azure ~OSS 視点で理解する、Azure のテクノロジ & アーキテクチャ~
Microsoft Azure build & ignight update summary
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
Container x AI
20180922 jazug8 cosmosdb_search
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法

Similar to DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~ (20)

PDF
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
PDF
Microsoft Azure 概要 (2015 年 4 月版)
PDF
MicrosoftによるAIビジネスへの取組み
PDF
Azure Searchで作る検索サービス
PDF
Cogbot_AzureOpenAIServices_AzureAI_20230302.pdf
PDF
Azure Search を使って Windows Phone 8.1 アプリを作った話
PPTX
Azure Search クックブック
PDF
メディアコンテンツ向け記事検索DBとして使うElasticsearch
PPTX
How tousemicrosoftsearch 20200725
PDF
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
PDF
【de:code 2020】 ”AI パーツ” であなたは何つくる? Azure Cognitive Services アップデート
PDF
[Developers Festa Sapporo 2018] Azure AI ~Microsoft AzureでのAI開発のイマ~
PPTX
Azure BaaS meetup
PDF
What's New in the Elastic 8.4 Release
PPTX
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
PPTX
Azure Search 大全
PDF
Renewed using elasticsearchonaspnet-core5
PDF
OSS on Azure で構築するウェブアプリケーション
PDF
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
PDF
What's New in the Elastic 8.5 Release
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
Microsoft Azure 概要 (2015 年 4 月版)
MicrosoftによるAIビジネスへの取組み
Azure Searchで作る検索サービス
Cogbot_AzureOpenAIServices_AzureAI_20230302.pdf
Azure Search を使って Windows Phone 8.1 アプリを作った話
Azure Search クックブック
メディアコンテンツ向け記事検索DBとして使うElasticsearch
How tousemicrosoftsearch 20200725
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
【de:code 2020】 ”AI パーツ” であなたは何つくる? Azure Cognitive Services アップデート
[Developers Festa Sapporo 2018] Azure AI ~Microsoft AzureでのAI開発のイマ~
Azure BaaS meetup
What's New in the Elastic 8.4 Release
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Azure Search 大全
Renewed using elasticsearchonaspnet-core5
OSS on Azure で構築するウェブアプリケーション
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
What's New in the Elastic 8.5 Release
Ad

More from decode2016 (20)

PDF
SPL-005_オープンソースから見たマイクロソフト
PDF
SPL-004_Windows 10 開発の舞台裏から学ぶエンジニアの未来
PDF
SPL-003_黒船襲来! 世界DevOps トップ企業 x マイクロソフトによるトークバトル セッション
PDF
SPL-002_クラウド心配性な上司を説得するコツを伝授します ~本当に信頼できるクラウドの構築/運用とは? マイクロソフト クラウド成長の軌跡~
PDF
PRD-009_クラウドの ERP による業務システム開発 ~OData エンド ポイントから Power BI 連携~
PDF
PRD-008_クラウド ネイティブ ERP ~Dynamics AX のアーキテクチャ/環境構築から開発/運用まで~
PDF
PRD-006_機械学習で顧客対応はこう変わる! Azure ML と Dynamics で造る次世代 CRM
PDF
PRD-005_Skype Developer Platform によるアプリケーション開発の最新情報
PDF
PRD-004_ここまでできる! Azure AD と Office 365 連携開発の先進手法
PDF
PRD-002_SharePoint Server 2016 & Online ハイブリッド環境での業務活用
PDF
INF-028_そのエラーやお困りごと、ツールを使えば解決できるかも! ~Sysinternals や OS 標準ツールの徹底活用術~
PDF
INF-027_セキュリティ マニアックス -サイバー攻撃の手口と防御手法- ~敵を知り、己を知れば百戦危うからず~
PDF
INF-026_真のクラウドベース EMM ~マイクロソフトのモビリティ戦略はいかにユニークか~
PDF
INF-025_企業で使える Windows 10 ~現実的なアプリ & デバイス管理~
PDF
INF-024_Windows 10 の展開 ~プロビジョニング? いやワイプ & ロードでしょ!~
PDF
INF-023_マイクロソフトの特権管理ソリューションの全貌 ~永続的な管理者特権の廃止への道~
PDF
INF-022_情報漏えいを責めるべからず。今必要な対策とは? ~Windows 10 セキュリティ機能徹底解説~
PDF
INF-021_実践! Windows as a Service との上手な付き合い方 ~新しい OS 更新管理の徹底解説~
PDF
INF-020_メーカーがおしえてくれない正しいクラウドについて
PDF
INF-019_Nano Server だけでここまでできる! ~極小サーバーの使い方~
SPL-005_オープンソースから見たマイクロソフト
SPL-004_Windows 10 開発の舞台裏から学ぶエンジニアの未来
SPL-003_黒船襲来! 世界DevOps トップ企業 x マイクロソフトによるトークバトル セッション
SPL-002_クラウド心配性な上司を説得するコツを伝授します ~本当に信頼できるクラウドの構築/運用とは? マイクロソフト クラウド成長の軌跡~
PRD-009_クラウドの ERP による業務システム開発 ~OData エンド ポイントから Power BI 連携~
PRD-008_クラウド ネイティブ ERP ~Dynamics AX のアーキテクチャ/環境構築から開発/運用まで~
PRD-006_機械学習で顧客対応はこう変わる! Azure ML と Dynamics で造る次世代 CRM
PRD-005_Skype Developer Platform によるアプリケーション開発の最新情報
PRD-004_ここまでできる! Azure AD と Office 365 連携開発の先進手法
PRD-002_SharePoint Server 2016 & Online ハイブリッド環境での業務活用
INF-028_そのエラーやお困りごと、ツールを使えば解決できるかも! ~Sysinternals や OS 標準ツールの徹底活用術~
INF-027_セキュリティ マニアックス -サイバー攻撃の手口と防御手法- ~敵を知り、己を知れば百戦危うからず~
INF-026_真のクラウドベース EMM ~マイクロソフトのモビリティ戦略はいかにユニークか~
INF-025_企業で使える Windows 10 ~現実的なアプリ & デバイス管理~
INF-024_Windows 10 の展開 ~プロビジョニング? いやワイプ & ロードでしょ!~
INF-023_マイクロソフトの特権管理ソリューションの全貌 ~永続的な管理者特権の廃止への道~
INF-022_情報漏えいを責めるべからず。今必要な対策とは? ~Windows 10 セキュリティ機能徹底解説~
INF-021_実践! Windows as a Service との上手な付き合い方 ~新しい OS 更新管理の徹底解説~
INF-020_メーカーがおしえてくれない正しいクラウドについて
INF-019_Nano Server だけでここまでできる! ~極小サーバーの使い方~
Ad

DEV-018_Azure Search Deep Dive ~検索エクスペリエンス向上のためのノウハウ徹底解説~