今さら聞けない! クラウドを使った search-as-a-service の活...
TRANSCRIPT
• カナダ最大の車のマーケットプレース• 画像データ•
•• 地理的 ディーラー
•
•
•
より頻繁に検索https://customers.microsoft.com/Pages/CustomerStory.aspx?recid=18596
「モバイルアプリで、もっと売れると
思ったんですよねぇ」
「欲しいものは、
なんか違うのよね」
“AdventureWorks Cycle Shop”
車種 型番 色 価格 画像URL
マウンテン MS-01 赤 10万 http://xxx/a01.png
マウンテン MS-02 青 8万 http://xxx/b01.png
「スマホでの入力は大変ね」 ”文字入力” ”アクション”
入力候補
絞り込み
あいまい検索
●●
● ●
●●
●
●
“AdventureWorks Cycle Shop”
車種 型番 色 価格 画像URL
マウンテン MS-01 赤 10万 http://xxx/a01.png
マウンテン MS-02 青 8万 http://xxx/b01.png「運動したくて、
自転車はどうかなって」
運動
“AdventureWorks Cycle Shop”
車種 型番 色 価格 画像URL
マウンテン MS-01 赤 10万 http://xxx/a01.png
マウンテン MS-02 青 8万 http://xxx/b01.png
“Azure Sports Store”
カテゴリ 商品名 価格 画像URL
ランニング Azureシューズ 1万円 http://yyy/as01.png
フィットネス Cloudワンダー 2万円 http://xxxx/fc04.png
“AdventureWorks Work-Out Services”
車種 型番 色 価格 画像URL
マウンテン MS-01 赤 10万 http://xxx/a01.png
マウンテン MS-02 青 8万 http://xxx/b01.png
“Azure Sports Store”
カテゴリ 商品名 価格 画像URL
ランニング Azureシューズ 1万円 http://yyy/as01.png
フィットネス Cloudワンダー 2万円 http://xxxx/fc04.png
Search
大カテゴリ 中カテゴリ 商品名 価格 画像URL Blogタイトル
自転車 マウンテン MS-01 10万 http://xxx/a01.png {ランとバイクの相乗効果…}
自転車 マウンテン MS-02 8万 http://xxx/b01.png {富士山からの… , 2時間で..}
ランニング “シューズ” Azureシューズ 1万円 http://yyy/as01.png {ランとサイクリングの…}
フィットネス “筋トレ” Cloudワンダー 2万円 http://yyy/fc04.png サイクリングで鍛えられな
Work-OutDataIndex
サービス用のデータ構造
Oracle CouchDBDB2Postgres MongoDBCassandra
RavenDBMySQLSQL DB RedisDocumentDB
Relational No-SQL
Azure Search
商品購入、
レビュー書き込み
商品カタログ更新
DocumentDB
SQL Database
Azure Search
Azure Table
AdventureWorks
Azurewebsites.net
商品カタログ、レビュー、レーティング
購買
商品カタログ検索
ショッピングカート
販売チャネルを増やす事も考えないとね
“AdventureWorks Work-Out Services”
Search
圧倒的なスケーラビリティ
「参照」と「更新」の分離
• データ分割とレプリケーション
高度なデータ管理
• インデックス管理など
Search
参照前提のシステム
• “カラム”: 負荷分散、冗長性
• “ロウ”: データ量
シンプルな管理
• データ更新のスケジュール
• クエリー処理/秒でのスケールアウト
検索エンジンのインフラを構築できますか?
絞り込み用データなど補足情報の迅速な提供
各国語処理
開発者 インフラを構築せず検索の Experience
組み込む
高いパフォーマンス
洗練された検索結果
ビジネスの重要度に応じた調整
素早い市場展開
エンタープライズグレード
スケールアウト
データ“サーフェース”
Azure Search
IndexFacetsSuggestion
.png
moreLikeThis
https://msdn.microsoft.com/en-us/library/azure/dn798935.aspx
http://azure.microsoft.com/ja-jp/documentation/articles/search-get-started-dotnet/ https://msdn.microsoft.com/en-us/library/azure/dn951165.aspx
https://msdn.microsoft.com/en-us/library/azure/dn832684.aspx
http://azure.microsoft.com/ja-jp/documentation/articles/search-get-started-java/
http://azure.microsoft.com/ja-jp/documentation/articles/search-get-started-nodejs/
http://azure.microsoft.com/ja-jp/documentation/articles/search-workflow/
Azure Search
Index
SQL Server /
SQL Database
Admin Key 管理
Query Key 検索 DocumentDB
http://azure.microsoft.com/ja-jp/regions/#services
http://azure.microsoft.com/ja-jp/documentation/articles/search-create-service-portal/
•処理能力と冗長性での設定• ユーザー数:
• 検索処理: Query per Sec
• 記憶域• Document保持数 / Upload per Sec
オブジェクト 無料 (共有) 標準 (占有)
インデックスの最大数 3 Search サービスあたり 50
インデックスごとのフィールドの最大数 1,000 1,000
ドキュメントの最大数 10,000 パーティションごとに 1,500 万
ストレージの最大サイズ 50 MB パーティションごとに 25 GB
最大パーティション 該当なし Search サービスあたり 12
最大レプリカ数 該当なし Search サービスあたり 6
検索単位の最大数 該当なし Search サービスあたり 36
インデクサーの最大数 3 Search サービスあたり 10
データソースの最大数 3 Search サービスあたり 10
1 つのインデクサー呼び出しでインデックスを作成できるドキュメントの最大数
10,000 無制限
https://msdn.microsoft.com/library/azure/dn798934.aspx
プロビジョニング
Search RDB
Index Index
Document Row
Field Column
Crawling (“indexing”) Data Import
≒
http://azure.microsoft.com/ja-jp/documentation/articles/search-create-index-portal/
https://msdn.microsoft.com/library/azure/dn798941.aspx/
属性 説明
検索可能 (searchable) 全文検索可能に。インデックス作成時にワードブレイクや言語分析をする
取得可能 (retrievable) フィールドを検索結果に含めるか
フィルター可能
(filterable)
$filter クエリで参照するか。完全一致のみとなる。True / false など。
ソート可能 (sortable) 既定のランキングアルゴリズム以外で、並び替えができるようにするか
ファセット可能
(facetable)
ファセット (カテゴリー別のヒット数を含む検索結果)
で使用するか
キー (key) 一意の識別子
プロビジョニング
インデックス作成
https://msdn.microsoft.com/ja-jp/library/azure/dn798930.aspx
プロビジョニング
インデックス作成
インデッキシング
Azure Search
IndexFacetsSuggestion moreLikeThis
var searchClient = new SearchServiceClient(searchServiceName, newSearchCredentials(apiKey));var indexClient = searchClient.Indexes.GetClient("decode2015sessions");
SearchParameters sp = new SearchParameters() {SearchMode = SearchMode.All,Facets = {"track","speaker"},HighlightPreTag ="<b>",HighlightPostTag ="</b>",HighlightFields = {"title","overview"},Top = 10,IncludeTotalResultCount = true
};var searchResult = indexClient.Documents.Search(searchText, sp);return searchResult;
$filter=geo.distance(location, geography'POINT(-122.131577 47.678581)') le 10
$filter=geo.intersects(location, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))')
https://msdn.microsoft.com/library/azure/dn798921.aspx/
hellobonjour
guten tag
jó napot
buon giorno
salveolázdravstvuyte
holagod dag
merhaba
こんにちは
안녕하세요
Grüßgott
xin chào
http://leagles.jp/
hellobonjour
guten tag
jó napot
buon giorno
salveolázdravstvuyte
holagod dag
merhaba
こんにちは
안녕하세요
Grüßgott
xin chào
“東京都ルパン上映時間”
“東京都”
“ルパン”
“上映”
“時間”
“東京都ルパン上映時間”
“東京”
“京都”
“都 ”
“ ル”
・・・
単語から語尾を切り離し語幹(Stem)に統一
• engineering, engineers, engineered →
engineer• car, cars, car’s, cars’ → car• コンピューター → コンピュータ• コーナー → コーナ
正規化(Normalization)
単語を一定ルールで変形。表記の揺れも
• U.S.A → USA
• Co-education → coeducation• 半角カタカナ→ 全角カタカナ• カタカナ→ ひらがな
• Alphabētikós Katálogos →
Alphabetikos Katalogos #Non Spacing
mark
• 簡化字 → 简化字
UNICODE テキストセグメント化
hellobonjour
guten tag
jó napot
buon giorno
salveolázdravstvuyte
holagod dag
merhaba
こんにちは
안녕하세요
Grüßgott
xin chào
https://msdn.microsoft.com/ja-jp/library/azure/dn879793.aspx
プロビジョニング
インデックス作成
インデッキシング
検索
数値化
属性 説明
magnitude 数値フィールドの値に基づく。星評価、クリック数など
freshness DateTimeOffsetフィールドの値に基づく
distance 地理的情報に基づく
線形 (Linear) 一定の減少量で。既定の補間
定数
(Constant)一定の値
二次式
(Quadratic)
最初は遅いペースで低下し、範囲の終わり近づくにつれて低下するペースが速く
Log10
(Logarithmic )
最初は速いペースで低下し、範囲の終わり近づくにつれて低下するペースが遅く
https://msdn.microsoft.com/library/azure/dn798928.aspx/
Azure Search
Recall Lemmatization
Synonym Expansion
Wildcards
Anti-phrasing
Phonetic Search
PrecisionExact Word Matching
Exact Phrase Matching
Proximity
Improvement
through linguistics
検索ヒット数↑
検索ノイズ ↑
検索精度 ↑
検索漏れ ↑
SQL Database DocumentDB Search Tables HDInsight
Azure Search 製品サイト http://azure.microsoft.com/en-
us/documentation/services/search/
http://azure.microsoft.com/ja-jp/documentation/articles/fundamentals-azure-search-chappell/
Azure Search シナリオと機能 http://blogs.msdn.com/b/windowsazurej/archive/2014/09/16/
blog-azure-search-scenarios-and-capabilities.aspx
Azure Search 最初の一歩 .NET http://azure.microsoft.com/ja-
jp/documentation/articles/search-get-started-dotnet/
API ドキュメント https://msdn.microsoft.com/library/azure/
dn798933.aspx
評価のためのご参考資料