Suche senden
Hochladen
Azure Search クックブック
•
11 gefällt mir
•
4,603 views
Kazuyuki Miyake
Folgen
JAZUG7周年総会でお話ししたAzure Searchの適用パターンのお話しです。
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 53
Empfohlen
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
Yoichi Kawasaki
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Yoichi Kawasaki
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Yoichi Kawasaki
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロ
Kazuyuki Miyake
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについて
Oshitari_kochi
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Yoichi Kawasaki
Empfohlen
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
Azure サービスを活用して作るフルマネージドな全文検索アプリケーション
Yoichi Kawasaki
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Yoichi Kawasaki
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Yoichi Kawasaki
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロ
Kazuyuki Miyake
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについて
Oshitari_kochi
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
Yoichi Kawasaki
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
de:code 2017
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Suguru Ito
Azure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまで
Daisuke Masubuchi
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
Naoki (Neo) SATO
Azure Network 概要
Azure Network 概要
Takeshi Fukuhara
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Keisuke Takahashi
Azure aws違い
Azure aws違い
Masanobu Sato
Scaling MongoDB on AWS
Scaling MongoDB on AWS
Yasuhiro Matsuo
俺のサイジング
俺のサイジング
Toru Makabe
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
Takahiro Moteki
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
de:code 2017
[簡易提案書]Azure overview 2017_april_v1.00
[簡易提案書]Azure overview 2017_april_v1.00
Toshihiko Sawaki
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
Naoki (Neo) SATO
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
Daisuke Masubuchi
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
Takahiro Moteki
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
Real World Azure RBAC
Real World Azure RBAC
Toru Makabe
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
[Japan Tech summit 2017] APP 003
[Japan Tech summit 2017] APP 003
Microsoft Tech Summit 2017
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
Weitere ähnliche Inhalte
Was ist angesagt?
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
de:code 2017
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Suguru Ito
Azure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまで
Daisuke Masubuchi
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
Naoki (Neo) SATO
Azure Network 概要
Azure Network 概要
Takeshi Fukuhara
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Keisuke Takahashi
Azure aws違い
Azure aws違い
Masanobu Sato
Scaling MongoDB on AWS
Scaling MongoDB on AWS
Yasuhiro Matsuo
俺のサイジング
俺のサイジング
Toru Makabe
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
Takahiro Moteki
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
de:code 2017
[簡易提案書]Azure overview 2017_april_v1.00
[簡易提案書]Azure overview 2017_april_v1.00
Toshihiko Sawaki
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
Naoki (Neo) SATO
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
Daisuke Masubuchi
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
Takahiro Moteki
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
Real World Azure RBAC
Real World Azure RBAC
Toru Makabe
Was ist angesagt?
(18)
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
[DI07] あらゆるデータに価値がある! アンチ断捨離ストのための Azure Data Lake
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまで
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
Azure Network 概要
Azure Network 概要
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure aws違い
Azure aws違い
Scaling MongoDB on AWS
Scaling MongoDB on AWS
俺のサイジング
俺のサイジング
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[DI15] Build 2017 Updates ~ Azure Database for MySQL/PostgreSQL 最速紹介
[簡易提案書]Azure overview 2017_april_v1.00
[簡易提案書]Azure overview 2017_april_v1.00
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
[db tech showcase Tokyo 2017] AzureでOSS DB/データ処理基盤のPaaSサービスを使ってみよう (Azure Dat...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Real World Azure RBAC
Real World Azure RBAC
Ähnlich wie Azure Search クックブック
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
[Japan Tech summit 2017] APP 003
[Japan Tech summit 2017] APP 003
Microsoft Tech Summit 2017
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い
真吾 吉田
明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure
Daiyu Hatakeyama
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
シラサギハンズオン 東京
シラサギハンズオン 東京
Yu Ito
WebIDLを見てみる
WebIDLを見てみる
takenspc
Azure Functions と Serverless - 概要と企業向け Tips
Azure Functions と Serverless - 概要と企業向け Tips
Keiji Kamebuchi
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
Akira Inoue
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
yaegashi
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
株式会社MonotaRO Tech Team
Azure <3 Openness
Azure <3 Openness
Keiji Kamebuchi
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
日本マイクロソフト株式会社
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
decode2016
マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介
Sunao Tomita
Ähnlich wie Azure Search クックブック
(20)
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
[Japan Tech summit 2017] APP 003
[Japan Tech summit 2017] APP 003
シラサギハンズオン 大阪
シラサギハンズオン 大阪
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い
明治大学理工学部 特別講義 AI on Azure
明治大学理工学部 特別講義 AI on Azure
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
シラサギハンズオン 東京
シラサギハンズオン 東京
WebIDLを見てみる
WebIDLを見てみる
Azure Functions と Serverless - 概要と企業向け Tips
Azure Functions と Serverless - 概要と企業向け Tips
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
Azure <3 Openness
Azure <3 Openness
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
DBP-020_いざ無制限のデータの彼方へ! ~Azure Data Lake 開発の知識とベストプラクティス~
マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介
Mehr von Kazuyuki Miyake
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Kazuyuki Miyake
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake
Azure Cosmos DB + App Serviceの良い関係
Azure Cosmos DB + App Serviceの良い関係
Kazuyuki Miyake
XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)
Kazuyuki Miyake
Xamarin + Azure Mobile Appsの現実
Xamarin + Azure Mobile Appsの現実
Kazuyuki Miyake
DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)
Kazuyuki Miyake
本番運用で使うVisual Studio
本番運用で使うVisual Studio
Kazuyuki Miyake
現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート
Kazuyuki Miyake
Face APIで開発する時に使っている7つの道具
Face APIで開発する時に使っている7つの道具
Kazuyuki Miyake
Agile meets BABOK
Agile meets BABOK
Kazuyuki Miyake
要求管理を確実に行うための知識と方法
要求管理を確実に行うための知識と方法
Kazuyuki Miyake
Mehr von Kazuyuki Miyake
(11)
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB + App Serviceの良い関係
Azure Cosmos DB + App Serviceの良い関係
XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)
Xamarin + Azure Mobile Appsの現実
Xamarin + Azure Mobile Appsの現実
DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)
本番運用で使うVisual Studio
本番運用で使うVisual Studio
現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート
Face APIで開発する時に使っている7つの道具
Face APIで開発する時に使っている7つの道具
Agile meets BABOK
Agile meets BABOK
要求管理を確実に行うための知識と方法
要求管理を確実に行うための知識と方法
Azure Search クックブック
1.
Azure Serach クックブック JAZUG
7周年総会 2017.9.9
2.
「三宅@ZEN」 株式会社ゼンアーキテクツ共同創業者CTO ﹣常時5〜10のAzure導入プロジェクトに参画 コミュニティ等 ﹣Microsoft
MVP (Data Platform) ﹣「PaaSがかり」ブログやってます ﹣Xamarin、Vue.jsなども好き その他どうでもいいこと ﹣ 元銀行員 ﹣趣味はラジコンのレース(わりとガチ) Blog: k-miyake.github.io/blog/ Twitter: @kazuyukimiyake
3.
Azure Search使ってますか? 世の中的にあまり使われている気がしない..
最近、記事やセッションもあまりみかけない.. • 自分のプロジェクトでは約8割でSearchを利用してます
4.
Azure Search利用事例 API Apps Search Cosmos DB Blob Storage 認証 App
Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor Web Apps Token .NET Identity Framework REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 「一覧」「絞り込み」「全文検索」 などのフロント機能はAzure Searchを利用 富士フイルム「IMAGE WORKS」
5.
IMAGE WORKS:一覧画面 一覧表示 全文検索
6.
Azure Searchおすすめコンテンツ de:codeセッション資料 ﹣日本MSブラックベルトの川崎さん ﹣2016と2017どちらも参考になります • 2016:
https://channel9.msdn.com/Events/de-code/2016/DEV-018 • 2017: https://channel9.msdn.com/Events/de-code/2017/DI08 日経クラウドファースト9月号 ﹣全文検索サービス特集(AWSの記事もあり) ﹣Azrure Searchの執筆はZEN岡・三宅で担当しました
7.
本日のAgenda 1. Azure Searchおさらい 2.
Azure Search適用パターン 3. デモなどその他
8.
1. Azure Searchおさらい
9.
Azure Searchの位置付け Azure PaaS(SaaS説あり)の検索サービス ﹣検索エンジン ﹣インデックス(データ) ﹣インデクサー(クローラー) Elasticsearchがベース ﹣Azure上のFess的位置付け •
Fess: Apache Solrを使った検索サーバ
10.
Azure Searchの全体像 Blob StorageTable
StorageAzure SQL Database Cosmos DBAzure VM の SQL Server Index Indexer Search Engine Parser Analyzer Azure Search 検索文字列 検索クライアント 検索対象データソース 検索処理 インデクシング データ蓄積 テキスト解析
11.
Azure Searchの処理フロー Parser Search Engine Analyzer Indexer インデックス Analyzed terms Query terms Query tree Query text Documents terms Analyzed terms Retrieve Ingest Analyzer 検索処理 •
トークンの引き当て • ランキング処理• クエリ文の解析 • 内部クエリ―形式に変換 テキスト解析、トークンの展開 転置インデックス インデクシング JSON ドキュメント
12.
Azure Searchの特長 OSSの技術を応用 ﹣Elasticsearch、 Lucene インデクサーがある ﹣Azureの各データストアと連携 選択可能なアナライザー 検索クライアントの各種サポート機能 ﹣フィルタ、ファセット、サジェスト
etc..
13.
インデクサー(Index Writer) インデックス(データ)を作成する処理系 ﹣≒クローラー ﹣全文検索システムでわりとハードルが高い分野 Azureの各データストアと連携 ﹣SQL DB、Cosmos
DBなど ﹣基本はコード不要 カスタムインデクサー ﹣コードによるカスタマイズ Indexer Documents terms Analyzed terms Analyzer インデクシング インデックス
14.
アナライザー テキストを解析してトークン化する処理系 2つのアナライザーから選択可能 ﹣Lucene Analyzer(ElasticsearchやSolrでも採用 ) ﹣Microsoft
Analyzer 日本語サポート ﹣ja.lucene(kuromoji) • 形態素解析ライブラリ • https://github.com/atilika/kuromoji Parser Analyzer Indexer Analyzer Analyzed terms Query terms Documents terms 検索処理 インデクシング テキスト解析、トークンの展開
15.
スコアリング 検索ランキングの算出 ﹣クエリに対するドキュメントの関連性の評価結果がソート された結果 ﹣SQLのLikeと最も異なる点 TF-IDFでスコアリング ﹣文書の中でのそのキーワードの重み、特徴度を表す値 スコアリングプロファイルのチューニング ﹣Tagブースト、freshnessブースト etc.
16.
基本的な検索 全文検索 ﹣ドキュメントから文字列を評価 ﹣アナライザーを使う • Lucene query
syntaxが使える • “queryType”: “full” フィルター ﹣特定フィールドの絞り込み ﹣SQLのWhere句に近い ﹣Odata式を使う { "wikipediaid": 1836865, "name": "ホンダ・ビート", "note": "ビート(Beat)は、本田技研工業がかつて生 産、販売していたオープン2シーターの軽自動車であ る。", "constructor": "ホンダ", "drive": "MR", "year": 1991, "id": "3e3fba2d-5400-4dd9-9f83-dfdd1b4e830a" } “filter”: “constructor eq ‘ホンダ’ and year gt 1989” “search”: “オープン 軽自動車"
17.
ファセット・ナビゲーション ドリルダウンナビゲーションを提供するフィルター処理の一種 スキーマで「facetable:true」で登録されているフィールドを使用 /indexes/rcindex/docs?... &facet=review &facet=price &facet=condition &search=タミヤ%20ラジコン
18.
その他の検索サポート機能 サジェスト ヒット文字列の強調表示(ハイライト) ソート/ページング 地理空間検索
19.
検索トラフィック分析 Blobストレージへの出力 Application Insightsと連携 ﹣検索要求が発行されるタイミングで、 Application Insights
のカスタムイベントを発行する appInsights.trackEvent( "Search", { SearchServiceName: "<service name>", SearchId: "<search id>", IndexName: "<index name>", QueryTerms: "<search terms>", ResultCount: "<results count>", ScoringProfile: "<scoring profile used>" });
20.
プロビジョニング サービスの導入自体はシンプル ﹣リソース名とSKUを決めるくらい リージョン ﹣国内は西日本のみ… ﹣データソースと同一が望ましい リソースグループグループ ﹣データソースと同一だと、インデクシングで少し楽に
21.
スケール スケールアップ ﹣Free、Basic、Standard(S1, S2, S3) スケールアウト(Standard) ﹣レプリカ:
検索サイドのスケール ﹣パーティション: データサイドのスケール 注意したいこと • 料金は レプリカ x パーティションで算出される! • スケールアップは再プロビジョニングが必要(残念・・)。
22.
2. Azure Search適用パターン
23.
適用パターン パターン1: RDB負荷軽減パターン パターン2: Cosmos
DB併用パターン パターン3: Office文書検索パターン
24.
パターン1: RDB負荷軽減パターン 解決する課題 ﹣SQL
DatabaseなどRDBへのクエリー負荷を軽減し、全文 検索も実現したい。 RDBにAzure Searchを組み合わせることで、絞り 込み検索や一覧表示に使うクエリー機能をAzure Searchにオフロードする
25.
RDB負荷軽減パターンのアーキテクチャ Search App Service Web Apps SQL
Database 自動インデクサーによる 差分データ更新 検索結果・ ファセット・ スコア ・ 一覧・絞り込み、検索はSearchへ ・ 詳細データ取得・更新はSQL DBへ 絞り込み検索/ 全文検索 詳細データ取得・更新 (キーによるアクセス)
26.
パターン1のねらい・期待効果 RDB側へのクエリー負荷を軽減 ﹣(余裕すぎる)パフォーマンスレベルの見直しが可能(かも) 一覧、絞り込み機能のユーザビリティ改善 ﹣一覧表示パフォーマンス向上 ﹣ファセット・ナビゲーションの利用
全文検索機能の提供 ﹣Like検索では実現できなかった精度の高い全文検索 • 高精度: 関連性、スコアのある検索結果
27.
自動インデクサーの活用 コード不要でインデックスの作成・更新が可能 ﹣新規作成時は「データのインポート」機能で完結 • クエリである程度のデータ調整が可能 ﹣更新はSearchに付属のスケジューラが定期実行 サポートされているデータソース Blob
StorageTable StorageAzure SQL Database Cosmos DBAzure VM の SQL Server
28.
データソースの設定 SQL DBは、GUIの場合、単一のテーブル /ビューのみ選択可能。 データソースをカスタマイズしたい場合 は、REST API
か SDKを使う
29.
インデックススキーマの設定 フィールドの定義 ﹣データ型 ﹣各種プロパティ 作成方法 ﹣ポータル(GUI) ﹣REST API, SDK プロパティはを変更するには インデックス全体の再作成となる。
30.
インデクサーの設定 スケジュール ﹣実行タイミング ﹣頻度 ﹣開始時刻 詳細オプション ﹣エラー関連 ﹣バッチサイズ
31.
クエリ例: 全文検索 // クエリ(REST) POST
https://*******.search.windows.net/indexes/carindex-sql/docs/search?api-version=2016-09-01 Content-Type: application/json Accept: application/json api-key: ************* { "search": "オープン2シーター", "select": "Name, Constructor, Note" } // 結果 { "value": [ { "@search.score": 0.8203498, "Name": "ホンダ・ビート", "Constructor": "ホンダ", "Note": "ビート(Beat)は、本田技研工業がかつて生産、販売していたオープン2シーターの軽自動車である。" }, { "@search.score": 0.6801461, "Name": "S2000", "Constructor": "ホンダ", "Note": "S2000(エスにせん)は、本田技研工業がかつて生産、販売していたFRオープン2シーターのスポーツカーである。" }, { "@search.score": 0.5865794, "Name": "トヨタ・MR-S", "Constructor": "トヨタ", "Note": "トヨタ・MR-S(エムアール-エス)とは、オープンタイプ(手動ソフトトップ)のスポーツカーで・・・(以下省略)。" }] } 全文検索の文字列と、検索結果で表示し たいフィールドを指定 アナライザーによってヒットしたと 思われる単語 検索結果スコア
32.
クエリ例: フィルタとファセット // クエリ(REST) POST
https://*******.search.windows.net/indexes/carindex-sql/docs/search?api-version=2016-09-01 Content-Type: application/json Accept: application/json api-key: ************* { "filter": "Year gt 1987 and Year lt 1994", "facets": [ "Year", "Constructor" ] } // 結果 { "@search.facets": { "Year": [ { "count": 4, "value": 1989 }, { "count": 4, "value": 1992 }, { "count": 3, "value": 1990 }, (以下省略) ], "Constructor": [ { "count": 3, "value": "ホンダ" }, { "count": 2, "value": "フェラーリ" }, { "count": 2, "value": "ポルシェ" }, (以下省略) ] } } フィルタの条件式(Odata式)とファセット の結果を表示したいフィールドを指定 「Year」で絞り込まれた結果を、ファセッ トの結果(Year毎の集計件数) 「Year」で絞り込まれた結果と、ファセット の結果(Constructor毎の集計件数)
33.
参考: REST(POST)のRequest Body { "count":
true | false (default), "facets": [ "facet_expression_1", "facet_expression_2", ... ], "filter": "odata_filter_expression", "highlight": "highlight_field_1, highlight_field_2, ...", "highlightPreTag": "pre_tag", "highlightPostTag": "post_tag", "minimumCoverage": # (% of index that must be covered to declare query successful; default 100), "orderby": "orderby_expression", "scoringParameters": [ "scoring_parameter_1", "scoring_parameter_2", ... ], "scoringProfile": "scoring_profile_name", "search": "simple_query_expression", "searchFields": "field_name_1, field_name_2, ...", "searchMode": "any" (default) | "all", "select": "field_name_1, field_name_2, ...", "skip": # (default 0), "top": # } 検索: https://docs.microsoft.com/ja-jp/rest/api/searchservice/search-documents luceneクエリ: https://docs.microsoft.com/ja-jp/rest/api/searchservice/lucene-query-syntax-in-azure-search
34.
[DEMO] SQL DBからのインデックス作成
REST APIによるクエリ
35.
パターン2: Cosmos DB併用パターン 解決する課題 ﹣高速なNoSQLデータベースのCosmos
DBを利用したい が、コストはある程度抑えたい。 Azure Searchを併用することで、Cosmos DBへの直接クエ リーを減らしスループットのコスト(RU)を平準化す る
36.
Cosmos DBのポータル ポータルにメニューあり Cosmos DBとSearchは 相性が良い ﹣Searchの利用が前提?
37.
Cosmos DB併用パターンのアーキテクチャ Cosmos DB (DocumentDB
API) Search App Service Web Apps 絞り込み/ 全文検索詳細データ参照 データ更新とほぼ同時に インデックスが更新される Storage Queue 更新トリガー 更新元 インデックス更新データ更新 Functions
38.
パターン2の狙い・期待効果 Cosmos DBではスループット(RU)が事前予約制 ﹣スパイクなどに対応するのが(コスト面で)苦労する ﹣特に一覧・検索はRU消費が高くなりがち
一覧・検索はSearchに逃がす ﹣Cosmos DBへの直接クエリーを減らす ﹣RU消費を安定させる ほぼリアルタイムのインデックス更新が可能 ﹣非同期更新処理というCosmos DBの特性を生かす
39.
リアルタイムにインデックスを更新 Cosmos DB自体のデータ更新をトリガーにする ﹣キューを介した更新の連鎖 ﹣Functions等でのインデックス更新処理 Cosmos
DB (DocumentDB API) Search Storage Queue 更新トリガー Cosmos DBの更新処理 インデックス更新 データ更新
40.
インデックス更新Function public static void
Run(string carsQueue, dynamic inputDocument, TraceWriter log) { // Searchサービス用クライアントの作成 string searchServiceName = Environment.GetEnvironmentVariable("SearchServiceName", EnvironmentVariableTarget.Process); string queryApiKey = Environment.GetEnvironmentVariable("SearchServiceQueryApiKey", EnvironmentVariableTarget.Process); SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(queryApiKey)); ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("cars"); // CosmosDBから取得したデータをSearch用データ型に変換 var cars = new Car[] { new Car { Id = inputDocument.id, Wikipediaid = inputDocument.wikipediaid, Name = inputDocument.name, Constructor = inputDocument.constructor, Drive = inputDocument.drive, Year = inputDocument.year, Note = inputDocument.note, Thumbnail = inputDocument.thumbnail } }; // インデックスの更新 var batch = IndexBatch.MergeOrUpload(cars); indexClient.Documents.Index(batch); } Cosmos DBのデータJSONからSearchのインデックス 更新用ドキュメントを生成 実際にAzure Searchに更新データを送信 ここまではAzure Searchへの接 続準備 Functionsのデータバインディング設定により入力 データとなるCosmos DBのデータ
41.
参考: データソースの作成(REST) POST https://****************.search.windows.net/datasources?api-version=2016-09-01 Content-Type:
application/json api-key: **************** { "name": "mydocdbdatasource", "type": "documentdb", "credentials": { "connectionString": "****************” }, "container": { "name": "myDocDbCollectionId", "query": "SELECT c.id, c.name, c.car.drive, c.car.year, c._ts FROM c WHERE c._ts >= @HighWaterMark" }, "dataChangeDetectionPolicy": { "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy", "highWaterMarkColumnName": "_ts" } } データソースが構造化されている場合はここで クエリをカスタマイズしてフラット化する (c.car.drive, c.car.yearはフラット化した例) データ更新の検出ポリシーを定義 (タイムスタンプを使用した 増分更新)
42.
[DEMO] Azure Functionsによるインデックス更新
43.
パターン3: Office文書検索パターン 解決する課題 ﹣一般的な文書ファイル(Excelや
Word、PowerPointといっ たOffice文書 、PDF、プレーンテキスト、CSVなど)の全 文検索環境を簡単に構築したい Azure SearchのBlobインデクサーを使うことて ゙文書の全文検索を容易に実現する
44.
Office文書検索パターンのアーキテクチャ Search 検索クライアント Web Appsなど 文書内 全文検索 自動インデクサーによる 文書インデックス作成 検索結果 サポートされている文書 • PDF,
HTML, XML, RTF, ZIP • DOCX/DOC、XLSX/XLS、PPTX/PPT • MSG , EML • プレーンテキスト ファイル, • JSON, CSV Blob Storage
45.
Blobインデックスの設定 インデックスに設定するフィールド ﹣idとcontent のみで良い
クエリ結果には自動的にメタデータが含まれる ﹣ファイル名、パス、サイズ等 ﹣コンテンツ種類毎のメタデータ • PDF: language , author, title • DOCX: author, character_count, page_countなど • PPTX: slide_count, title など
46.
クエリ例: Blobインデックス // クエリ(REST) POST
https://*******.search.windows.net/indexes/carindex-sql/docs/search?api-version=2016-09-01 Content-Type: application/json Accept: application/json api-key: ************* { "search": "レガシー", "highlight": "content" } // 結果 { "value": [ { "@search.score": 0.105222605, "@search.highlights": { "content": [ “『変わらない開発現場』を変えていくためにnn~エンプラ系<em>レガシー</em> SIer のための DevOps 再入門 ~n#decode17 #DO08n赤間 信幸nhttp://blogs.msdn.com/b/nakama/ ・・・(以下省略), "metadata_storage_name": "DO08.pptx", "metadata_storage_path": “aHR0cHM6Ly9taXl ha2VzZXJjaGRlbW8uYmxvYi5jb3JlLndpbmRvd3Mubm....”, "metadata_title": "PowerPoint プレゼンテーション" ヒットした文字列は<em>タグで、ハ イライト表示されている Blobの検索対象、ハイライト対象は 通常「content」となる PPTX用のメタデータが出力される
47.
3. Searchを本気で使うために
48.
高負荷対策 レプリカ ﹣検索サイドのスケール • クエリ操作の負荷分散 パーティション ﹣データサイドのスケール • インデックスのストレージと
I/O
49.
高可用性設計 レプリカによる対応 ﹣クエリの高可用性 • 2レプリカ以上 ﹣クエリ、インデックス更新の高可用性 •
3レプリカ以上 DR対応 ﹣Geoレプリケーションなどの仕組みはない ﹣各リージョンで同一インデクサーを動かすことで実現
50.
Searchクライアントの設計アプローチ Web API(
+ SDK)経由 ﹣.NET SDK限定 ﹣WebAPIにて統合が可能(認証、他のデータ) ダイレクト(+ REST API) ﹣JavaScriptでブラウザからAzure Searchに直接クエリー ﹣クエリーキー(読み取り専用)を事前にWebAPI等で配布
51.
まとめ Azure Searchは圧倒的に導入の敷居が低い
データとサービスは適材適所で使い分ける Azure Application Architecture Guide > Technology Choices > Choose the right data store https://docs.microsoft.com/ja-jp/azure/architecture/guide/technology-choices/data-store-overview#search-engine-databa
52.
53.
ご清聴ありがとうございました。