クイック スタート:C# を使用して Bing Custom Search エンドポイントを呼び出す
警告
2020 年 10 月 30 日に、Bing Search API は Azure AI サービスから Bing Search サービスに移行されました。 このドキュメントは、参考用としてのみ提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。
このクイックスタートでは、Bing Custom Search インスタンスに検索結果を要求する方法を学習します。 このアプリケーションは C# で記述されていますが、Bing Custom Search API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。 このサンプルのソース コードは、GitHub で入手できます。
前提条件
Bing Custom Search インスタンス。 詳細については、「クイック スタート: 最初の Bing Custom Search インスタンスの作成」を参照してください。
Visual Studio 2019 以降の任意のエディション。
Linux/macOS を使用している場合、このアプリケーションは Mono を使用して実行できます。
Bing Custom Search の NuGet パッケージ
Visual Studio にこのパッケージをインストールするには:
- ソリューション エクスプローラーで目的のプロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。
- Microsoft.Azure.CognitiveServices.Search.CustomSearch を検索して選択し、このパッケージをインストールします。
Bing Custom Search NuGet パッケージをインストールすると、次のパッケージも Visual Studio によってインストールされます。
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Custom Search API の使用を開始します。
Bing Custom Search リソース
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- Free 価格レベルを使ってサービスを試用し、後から運用環境用の有料レベルにアップグレードします。
マルチサービス リソース
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
アプリケーションを作成して初期化する
Visual Studio で、新しい C# コンソール アプリケーションを作成します。 次に、次のパッケージを目的のプロジェクトに追加します。
using System; using System.Net.Http; using System.Web; using Newtonsoft.Json;
Bing Custom Search API から返された検索結果を格納する次のクラスを作成します。
public class BingCustomSearchResponse { public string _type{ get; set; } public WebPages webPages { get; set; } } public class WebPages { public string webSearchUrl { get; set; } public int totalEstimatedMatches { get; set; } public WebPage[] value { get; set; } } public class WebPage { public string name { get; set; } public string url { get; set; } public string displayUrl { get; set; } public string snippet { get; set; } public DateTime dateLastCrawled { get; set; } public string cachedPageUrl { get; set; } }
プロジェクトのメイン メソッドで、Bing Custom Search API のサブスクリプション キー、検索インスタンスのカスタム構成 ID、検索語句に使用する次の各変数を作成します。
var subscriptionKey = "YOUR-SUBSCRIPTION-KEY"; var customConfigId = "YOUR-CUSTOM-CONFIG-ID"; var searchTerm = args.Length > 0 ? args[0]:"microsoft";
検索語句を
q=
クエリ パラメーターに追加し、検索インスタンスのカスタム構成 ID をcustomconfig=
パラメーターに追加して、要求 URL を作成します。 パラメーターの区切りには、アンパサンド (&
) を使用します。url
変数値には、次のコードのグローバル エンドポイントを使用するか、Azure portal に表示される、対象のリソースのカスタム サブドメイン エンドポイントを使用することができます。var url = "https://api.cognitive.microsoft.com/bingcustomsearch/v7.0/search?" + "q=" + searchTerm + "&" + "customconfig=" + customConfigId;
検索要求の送信と受信
要求のクライアントを作成し、
Ocp-Apim-Subscription-Key
ヘッダーにサブスクリプション キーを追加します。var client = new HttpClient(); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
検索要求を実行し、応答を JSON オブジェクトとして取得します。
var httpResponseMessage = client.GetAsync(url).Result; var responseContent = httpResponseMessage.Content.ReadAsStringAsync().Result; BingCustomSearchResponse response = JsonConvert.DeserializeObject<BingCustomSearchResponse>(responseContent);
結果の処理と表示
応答オブジェクトを反復処理して、それぞれの検索結果についての情報 (名前、URL、Web ページが最後にクロールされた日付など) を表示します。
for(int i = 0; i < response.webPages.value.Length; i++) { var webPage = response.webPages.value[i]; Console.WriteLine("name: " + webPage.name); Console.WriteLine("url: " + webPage.url); Console.WriteLine("displayUrl: " + webPage.displayUrl); Console.WriteLine("snippet: " + webPage.snippet); Console.WriteLine("dateLastCrawled: " + webPage.dateLastCrawled); Console.WriteLine(); } Console.WriteLine("Press any key to exit..."); Console.ReadKey();