<目次>
Azure AI Search(旧Cognitive Search)の使い方をご紹介(Pythonサンプルあり)
やりたいこと
概要
STEP0:前提条件
STEP1:Azure Cognitive Serachリソースの作成
STEP2:キーを控える
STEP3:開発環境のセットアップ
STEP4:Cognitive Searchへの接続
STEP5:インデックスの作成(Create an index)
STEP6:ドキュメントの読み込み(Load documents)
STEP7:インデックスの検索(Search an index)
Azure AI Search(旧Cognitive Search)の使い方をご紹介(Pythonサンプルあり)
やりたいこと
・Azure AI Search(旧Cognitive Search)を触ってみる。
・インデックスの作り方や、ドキュメントの読込み方、検索の仕方を理解する
概要
おおまかな流れは以下の通り。
・①Cognitive Searchへの接続
admin_client = SearchIndexClient(エンドポイント/キーなど)
search_client = SearchClient(エンドポイント/キーなど)↓
↓
・②インデックスの作成
fields = [フィールド1,フィールド2, …]
index = SearchIndex(fieldなどの引数)
admin_client.create_index(index)
↓
・③ドキュメントの読み込み
search_client.upload_documents(documents=documents)
↓
・④ドキュメントの検索
search_client.search(search_text=”xxxx”, include_total_count=True, select='[項目名]’, filter=’[フィルタ条件]’, order_by=’[ソート条件]’)
STEP0:前提条件
STEP1:Azure Cognitive Serachリソースの作成
・①「+作成」
(図111)
↓
・②必要項目を入れて作成
※「価格レベル」は「Standard」にする。理由は「セマンティック検索」がStandardプランでないと使えないため。今回はお試しのため、終了後にリソースを消す。
(図112)
↓
(図113)
STEP2:キーを控える
APIコールするための情報を確認する
・①「キー」ブレードの「プライマリ管理者キー」を控えておきます(後で使用)
(図121)
↓
・②「概要」ブレードのURLを控えておきます(後で使用)
(図122)
STEP3:開発環境のセットアップ
パッケージのインストール
> pip install jupyter
(図131)
↓
(図132)
STEP4:Cognitive Searchへの接続
※コードは↓の内容をコピペ
・①「cognitive-search.ipynb」を作成
→箱単位でPythonの小コードを実行できます。
(図141)
↓
・②ライブラリ読込み
(図142)
↓
・③認証&SDKクライアントクラスのインスタンス生成
(図143)
↓
※以降「.env」ファイルが表示されていますが、無視してください
(疎通に必須ではないです。環境変数を隠したい方は調べてみてください)
↓
・④既存のインデックスを一旦削除する
(図144)
STEP5:インデックスの作成(Create an index)
※コードは↓の内容をコピペ
・①インデックススキーマの作成
→検索に使う項目を定義
(図151)
↓
・②インデックスの作成
(図152)
↓
・③各セルを実行
(図153)
↓
・④インデックスが作成された
(図154)
STEP6:ドキュメントの読み込み(Load documents)
※コードは↓の内容をコピペ
・①ドキュメントの定義
→今回はJson形式でべた書き指定(※実際はコネクタ等で自動収集を想定)
→ドキュメント毎にインデックスのアクション(upload、merge-uploadなど)を定義します。
(図161)
↓
・②ドキュメントのロード
(図162)
↓
・③各セルを実行
(図163)
(図164)
STEP7:インデックスの検索(Search an index)
あとは、色々な条件指定で検索してみます!
※コードは↓の内容をコピペ
・例1:とりあえず疎通
results = search_client.search(search_text="*", include_total_count=True)
print ('Total Documents Matching Query:', results.get_count())
for result in results:
print("{}: {}".format(result["HotelId"], result["HotelName"]))
(図171)
↓
・例2:wifiがあるホテルを検索
results = search_client.search(search_text="wifi", include_total_count=True, select='HotelId,HotelName,Tags')
print ('Total Documents Matching Query:', results.get_count())
for result in results:
print("{}: {}: {}".format(result["HotelId"], result["HotelName"], result["Tags"]))
(図172)