Azure Cognitive Search FAQ

Azure Cognitive Search に関連する概念、コード、シナリオについてよく寄せられる質問の回答を見つけることができます。

全般

検索をソリューションに統合する方法

クライアント コードでは、クライアント ライブラリまたは REST API を呼び出して検索インデックスに接続し、クエリを作成し、応答を処理する必要があります。 インデックスをビルドして更新するコードを記述したり、インデクサーをプログラムやスクリプトで実行したりすることもできます。

さまざまな API で機能に類似性はありますか?

必ずしもそうではありません。 この REST API は、常に、プレビュー API バージョンで最初に新機能が実装されるもので、一般提供されているバージョンでは、プログラムによるすべての操作がサポートされています。 Azure SDK のクライアント ライブラリは、一定期間内で新しい機能が選択されますが、独自のスケジュールでリリースされます。

REST API は最新のフィーチャーが最初に用意されますが、Azure SDK は、より多くのコーディングがサポートされているので、必要なフィーチャーが利用できない場合を除き、REST よりも推奨されます。

サービスを一時停止して課金を停止できますか?

検索サービスを一時停止することはできません。 Azure Cognitive Search では、サービスの作成時にコンピューティング リソースが割り当てられます。 そのリソースを必要に応じて解放し、再請求することはできません。

サービスのアップグレード、ダウングレード、名前変更、または移動ができますか?

サービス レベル、名前、リージョンは、サービスの有効期間中は固定されます。

検索サービスを別のサブスクリプションまたはリソース グループに移行する場合、ダウンタイムは発生しますか?

リソースを移動する前にチェックリストする に従い、各ステップが完了していることを確認する限り、ダウンタイムは発生しません。

インデックス作成

インデックスの移動、バックアップ、復元はできますか?

インデックス管理のネイティブ サポートはありません。 検索インデックスは、ダウンストリーム データ構造と見なされ、運用データを収集する他のデータ ソースからのコンテンツを受け入れます。 そのため、インデックスのバックアップと復元の組み込みサポートはありません。インデックスを削除した場合、またはインデックスを移動する場合は、ソース データからインデックスをリビルドすると予想されるためです。

ただし、検索サービス間でインデックスを移動する場合は、この Azure Cognitive Search .NET サンプル リポジトリにある index-backup-restore サンプル コードを試すことができます。

削除されたインデックスまたはサービスは復元できますか?

いいえ。Azure Cognitive Search インデックスまたはサービスを削除した場合、復旧できません。 検索サービスを削除すると、サービス内のすべてのインデックスが完全に削除されます。

SQL Database レプリカからインデックスを作成できますか?

Azure SQL Database に対して検索インデクサーを使用している場合、インデックスを最初から構築するときに、データ ソースとしてプライマリまたはセカンダリのレプリカの使用に制限はありません。 ただし、(レコードの変更に基づく) 増分更新によるインデックスの更新には、プライマリ レプリカが必要です。 この要件は SQL Database に由来するものです。SQL Database は変更追跡をプライマリ レプリカでのみ保証しています。 インデックス更新ワークロードにセカンダリ レプリカを使用しようとすると、すべてのデータが取得される保証はありません。

クエリ

存在するとわかっている用語でも一致数が 0 件なのはなぜですか?

よくあるケースは、クエリの型ごとにサポートされる検索ビヘイビアーと言語分析のレベルが異なることを把握していない場合です。 主要なワークロードである全文検索には、用語を原形に分解する言語分析フェーズが含まれています。 トークン化された用語は、より多くの数の変形と一致するため、このようなクエリ分析はより広い網を一致候補にかけます。

ただし、ワイルドカード、あいまいクエリ、正規表現クエリは、通常の用語または語句クエリのように分析されず、クエリが検索インデックス内の分析されたワードフォームと一致しない場合、リコールが不適切になる可能性があります。 クエリの解析と分析について詳しくは、クエリのアーキテクチャに関する記事をご覧ください。

ワイルドカード検索が遅い理由

ほとんどのワイルドカード検索クエリ (プレフィックス、あいまい、正規表現など) は、検索インデックス内の一致する用語を使用して内部で再作成されます。 この追加の処理により、待ち時間が増えます。 さらに、 a* などの広範な検索クエリでは、多くの用語で書き換えられる可能性が高いと、低速になる可能性があります。 ワイルドカード検索のパフォーマンスを向上させるには、カスタム アナライザーの定義を検討してください。

複数のインデックスを対象に検索できますか?

いいえ。クエリは常に単一のインデックスが対象です。

検索スコアが一致ごとに 1.0 の定数である理由

検索スコアは、一致する用語の統計プロパティに基づいて、フルテキスト検索クエリに対して生成され、結果セットで上位から下位に順序付けされます。 フル テキスト検索ではないクエリの型 (ワイルドカード、プレフィックス、正規表現) は、関連性スコアで順位付けされません。 この動作は仕様です。 定数のスコアによって、ランクには影響を与えずに、クエリ拡張によって見つかった一致を結果に反映することができます。

たとえば、ワイルドカード検索に「tour*」と入力すると、「tours」、「tourettes」、「tourmaline」との一致が生成されます。 こうした結果の性質上、用語の相対的な重みを適切に推測することができません。 そのため、ワイルドカード、プレフィックス、正規表現の種類のクエリでは、結果のスコア付けを行う際に、語句の出現頻度が無視されます。 予期しない一致に対するバイアスを回避するために、部分的な入力に基づく検索結果には一定のスコアが与えられます。

セキュリティ

Cognitive Search では、顧客データはどこに保存されますか?

Cognitive Search では、顧客データはサービスがデプロイされているリージョン外に保存されません。

Cognitive Search では、処理のために他のサービスに顧客データを送信しますか?

はい。Cognitive Services に基づいて組み込みのスキルを使用すると、インデクサーは内部ネットワーク経由で Cognitive Services に要求を送信します。 カスタム スキルを追加すると、インデクサーはカスタム スキルで指定された URI にコンテンツを送信します。

ユーザー ID に基づいて検索結果へのアクセスを制御できますか?

通常、アプリケーションを実行する権限を持つユーザーには、すべての検索結果を表示する権限も与えられます。 Cognitive Search では、行レベルまたはドキュメント レベルのアクセス許可は組み込みサポートされていませんが、回避策としてセキュリティ フィルターを実装できます。

ユーザー ID に基づいて操作へのアクセスを制御できますか?

コンテンツに対するデータ プレーン操作へのロールベースの承認は、現在パブリック プレビューの段階にあります。

検索サービスが IP ファイアウォールまたはプライベート エンドポイントの内側にある場合、Azure portalを使用して検索コンテンツを表示および管理できますか?

クライアントとポータルへのアクセスを許可するネットワーク例外を作成する場合は、ネットワークで保護された検索サービスでAzure portalを使用できます。 詳細については、 IP ファイアウォール経由での接続 または プライベート エンドポイント経由の接続に関する説明を参照してください。

次のステップ

こちらでご質問の回答が見つからない場合は、次のソースでさらに質問と回答を参照できます。

Stack Overflow: Azure Cognitive Search
Azure Cognitive Search でのフルテキスト検索のしくみ
Azure Cognitive Search とは