Megosztás a következőn keresztül:


Rövid útmutató: Bing Web Search ügyfélkódtár használata

Figyelmeztetés

2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search Servicesbe. Ez a dokumentáció csak referenciaként szolgál. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos útmutatásért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.

A Bing Web Search ügyfélkódtárával egyszerűen integrálhatja a Bing Web Search alkalmazást a C#-alkalmazásba. Ebben a rövid útmutatóban elsajátíthatja az ügyfél-példányosítás, a kérésküldés és a válaszmegjelenítés módját.

Szeretné most rögtön megtekinteni a kódot? A .NET-hez készült Bing Search ügyfélkódtárak mintái a GitHubon érhetők el.

Előfeltételek

Az alábbi dolgokra szüksége lesz a rövid útmutató futtatásához:

Azure-erőforrás létrehozása

Kezdje el használni a Bing Web Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:

Bing Search v7-erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős szintre éles környezetben.

Többszolgáltatásos erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.

Projekt létrehozása és a függőségek telepítése

Tipp

Szerezze be a legújabb kódot Visual Studio-megoldásként a GitHubról.

Az első lépés egy új konzolprojekt létrehozása. Ha segítségre van szüksége egy konzolprojekt beállításához, olvassa el a "Helló világ!" alkalmazás – Az első program (C# programozási útmutató) című témakört. Ha a Bing Web Search SDK-t használná az alkalmazásában, a NuGet-csomagkezelővel telepítse a következőt: Microsoft.Azure.CognitiveServices.Search.WebSearch.

A Web Search SDK-csomag a követezőket is telepíti:

  • Microsoft.Rest.ClientRuntime
  • Microsoft.Rest.ClientRuntime.Azure
  • Newtonsoft.Json

Függőségek deklarálása

Nyissa meg a projektet a Visual Studióban vagy a Visual Studio Code-ban, és importálja a következő függőségeket:

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Search.WebSearch;
using Microsoft.Azure.CognitiveServices.Search.WebSearch.Models;
using System.Linq;
using System.Threading.Tasks;

Projektszerkezet létrehozása

Amikor létrehozta az új konzolprojektet, létre kellett jönnie egy névtérnek és egy osztálynak az alkalmazásához. A programnak a következő példához hasonlóan kell kinéznie:

namespace WebSearchSDK
{
    class YOUR_PROGRAM
    {

        // The code in the following sections goes here.

    }
}

A következő szakaszban ebben az osztályban hozzuk létre a mintaalkalmazásunkat.

Kérés létrehozása

Ez a kód hozza létre a keresési lekérdezést.

public static async Task WebResults(WebSearchClient client)
{
    try
    {
        var webData = await client.Web.SearchAsync(query: "Yosemite National Park");
        Console.WriteLine("Searching for \"Yosemite National Park\"");

        // Code for handling responses is provided in the next section...

    }
    catch (Exception ex)
    {
        Console.WriteLine("Encountered exception. " + ex.Message);
    }
}

A válasz kezelése

Most adjunk hozzá némi kódot a válasz elemzéséhez és az eredmények megjelenítéséhez. Az első weblap, kép, cikk és videó Name és Url értékét a rendszer megjeleníti, ha szerepel a válaszobjektumban.

if (webData?.WebPages?.Value?.Count > 0)
{
    // find the first web page
    var firstWebPagesResult = webData.WebPages.Value.FirstOrDefault();

    if (firstWebPagesResult != null)
    {
        Console.WriteLine("Webpage Results # {0}", webData.WebPages.Value.Count);
        Console.WriteLine("First web page name: {0} ", firstWebPagesResult.Name);
        Console.WriteLine("First web page URL: {0} ", firstWebPagesResult.Url);
    }
    else
    {
        Console.WriteLine("Didn't find any web pages...");
    }
}
else
{
    Console.WriteLine("Didn't find any web pages...");
}

/*
 * Images
 * If the search response contains images, the first result's name
 * and url are printed.
 */
if (webData?.Images?.Value?.Count > 0)
{
    // find the first image result
    var firstImageResult = webData.Images.Value.FirstOrDefault();

    if (firstImageResult != null)
    {
        Console.WriteLine("Image Results # {0}", webData.Images.Value.Count);
        Console.WriteLine("First Image result name: {0} ", firstImageResult.Name);
        Console.WriteLine("First Image result URL: {0} ", firstImageResult.ContentUrl);
    }
    else
    {
        Console.WriteLine("Didn't find any images...");
    }
}
else
{
    Console.WriteLine("Didn't find any images...");
}

/*
 * News
 * If the search response contains news articles, the first result's name
 * and url are printed.
 */
if (webData?.News?.Value?.Count > 0)
{
    // find the first news result
    var firstNewsResult = webData.News.Value.FirstOrDefault();

    if (firstNewsResult != null)
    {
        Console.WriteLine("\r\nNews Results # {0}", webData.News.Value.Count);
        Console.WriteLine("First news result name: {0} ", firstNewsResult.Name);
        Console.WriteLine("First news result URL: {0} ", firstNewsResult.Url);
    }
    else
    {
        Console.WriteLine("Didn't find any news articles...");
    }
}
else
{
    Console.WriteLine("Didn't find any news articles...");
}

/*
 * Videos
 * If the search response contains videos, the first result's name
 * and url are printed.
 */
if (webData?.Videos?.Value?.Count > 0)
{
    // find the first video result
    var firstVideoResult = webData.Videos.Value.FirstOrDefault();

    if (firstVideoResult != null)
    {
        Console.WriteLine("\r\nVideo Results # {0}", webData.Videos.Value.Count);
        Console.WriteLine("First Video result name: {0} ", firstVideoResult.Name);
        Console.WriteLine("First Video result URL: {0} ", firstVideoResult.ContentUrl);
    }
    else
    {
        Console.WriteLine("Didn't find any videos...");
    }
}
else
{
    Console.WriteLine("Didn't find any videos...");
}

A fő metódus deklarálása

Ebben az alkalmazásban a fő metódusban szerepel az ügyfelet példányosító, a subscriptionKey azonosítót érvényesítő és a WebResults metódust meghívő kód. Folytatás előtt győződjön meg arról, hogy érvényes előfizetői azonosítót adott meg az Azure-fiókjához.

static async Task Main(string[] args)
{
    var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));

    await WebResults(client);

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Az alkalmazás futtatása

Futtassa az alkalmazást.

dotnet run

Függvények definiálása és az eredmények szűrése

Most, hogy létrehozta az első hívást a Bing Web Search API-ra, tekintsünk meg néhány függvényt, amelyek jól példázzák az SDK lekérdezéseket pontosító és eredményeket szűrő funkcióját. Minden függvény hozzáadható az előző szakaszban létrehozott C#-alkalmazásához.

A Bing által visszaadott eredmények számának korlátozása

Ebben a példában a count és az offset paramétert használjuk a „Best restaurants in Seattle” (Seattle legjobb éttermei) keresésre visszaadott eredmények számának korlátozására. Az első eredményhez tartozó Name és Url értékét a rendszer megjeleníti.

  1. Adja hozzá ezt a kódot a konzolprojekthez:

    public static async Task WebResultsWithCountAndOffset(WebSearchClient client)
    {
        try
        {
            var webData = await client.Web.SearchAsync(query: "Best restaurants in Seattle", offset: 10, count: 20);
            Console.WriteLine("\r\nSearching for \" Best restaurants in Seattle \"");
    
            if (webData?.WebPages?.Value?.Count > 0)
            {
                var firstWebPagesResult = webData.WebPages.Value.FirstOrDefault();
    
                if (firstWebPagesResult != null)
                {
                    Console.WriteLine("Web Results #{0}", webData.WebPages.Value.Count);
                    Console.WriteLine("First web page name: {0} ", firstWebPagesResult.Name);
                    Console.WriteLine("First web page URL: {0} ", firstWebPagesResult.Url);
                }
                else
                {
                    Console.WriteLine("Couldn't find first web result!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any Web data..");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. A main metódushoz adja hozzá a következőt: WebResultsWithCountAndOffset.

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Futtassa az alkalmazást.

Hírek szűrése

Ez a minta a response_filter paraméter segítségével szűri a keresési eredményeket. A visszaadott keresési eredmények a „Microsoft” kifejezésre visszaadott hírekre vannak korlátozva. Az első eredményhez tartozó Name és Url értékét a rendszer megjeleníti.

  1. Adja hozzá ezt a kódot a konzolprojekthez:

    public static async Task WebSearchWithResponseFilter(WebSearchClient client)
    {
        try
        {
            IList<string> responseFilterstrings = new List<string>() { "news" };
            var webData = await client.Web.SearchAsync(query: "Microsoft", responseFilter: responseFilterstrings);
            Console.WriteLine("\r\nSearching for \" Microsoft \" with response filter \"news\"");
    
            if (webData?.News?.Value?.Count > 0)
            {
                var firstNewsResult = webData.News.Value.FirstOrDefault();
    
                if (firstNewsResult != null)
                {
                    Console.WriteLine("News Results #{0}", webData.News.Value.Count);
                    Console.WriteLine("First news result name: {0} ", firstNewsResult.Name);
                    Console.WriteLine("First news result URL: {0} ", firstNewsResult.Url);
                }
                else
                {
                    Console.WriteLine("Couldn't find first News results!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any News data..");
            }
    
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. A main metódushoz adja hozzá a következőt: WebResultsWithCountAndOffset.

    static Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Futtassa az alkalmazást.

A biztonságos keresés, a válaszszám és az előléptetés szűrő használata

Ez a példa az answer_count, a promote és a safe_search paraméter segítségével szűri a „Music Videos” (Zenei videók) kifejezés keresési eredményeit. A kód megjeleníti az első eredmény Name és ContentUrl értékét.

  1. Adja hozzá ezt a kódot a konzolprojekthez:

    public static async Task WebSearchWithAnswerCountPromoteAndSafeSearch(WebSearchClient client)
    {
        try
        {
            IList<string> promoteAnswertypeStrings = new List<string>() { "videos" };
            var webData = await client.Web.SearchAsync(query: "Music Videos", answerCount: 2, promote: promoteAnswertypeStrings, safeSearch: SafeSearch.Strict);
            Console.WriteLine("\r\nSearching for \"Music Videos\"");
    
            if (webData?.Videos?.Value?.Count > 0)
            {
                var firstVideosResult = webData.Videos.Value.FirstOrDefault();
    
                if (firstVideosResult != null)
                {
                    Console.WriteLine("Video Results # {0}", webData.Videos.Value.Count);
                    Console.WriteLine("First Video result name: {0} ", firstVideosResult.Name);
                    Console.WriteLine("First Video result URL: {0} ", firstVideosResult.ContentUrl);
                }
                else
                {
                    Console.WriteLine("Couldn't find videos results!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any data..");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. A main metódushoz adja hozzá a következőt: WebResultsWithCountAndOffset.

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
        // Search with answer count, promote, and safe search
        await WebSearchWithAnswerCountPromoteAndSafeSearch(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Futtassa az alkalmazást.

Az erőforrások eltávolítása

Ha végzett ezzel a projekttel, ne felejtse el eltávolítani az előfizetői azonosítót az alkalmazás kódjából.

Következő lépések

A Bing Web Search ügyfélkódtárával egyszerűen integrálható a Bing Web Search a Java-alkalmazásba. Ebben a rövid útmutatóban elsajátíthatja a kérésküldésnek, a JSON-válaszok fogadásának, valamint az eredmények szűrésének és elemzésének módját.

Szeretné most rögtön megtekinteni a kódot? A Java-hoz készült Bing Search ügyfélkódtárak mintái a GitHubon érhetők el.

Előfeltételek

Az alábbi dolgokra szüksége lesz a rövid útmutató futtatásához:

Azure-erőforrás létrehozása

Kezdje el használni a Bing Web Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:

Bing Search v7-erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős szintre éles környezetben.

Többszolgáltatásos erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.

Projekt létrehozása és A POM-fájl beállítása

Hozzon létre egy új Java-projektet a Mavennel vagy a kedvenc buildelést automatizáló eszközével. Feltételezve, hogy Maven-t használ, adja hozzá a következő sorokat a Project Object Model (POM) fájlhoz. A mainClass összes példányát cserélje le az alkalmazására.

<build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <configuration>
          <!--Your comment
            Replace the mainClass with the path to your Java application.
            It should begin with com and doesn't require the .java extension.
            For example: com.bingwebsearch.app.BingWebSearchSample. This maps to
            The following directory structure:
            src/main/java/com/bingwebsearch/app/BingWebSearchSample.java.
          -->
          <mainClass>com.path.to.your.app.APP_NAME</mainClass>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>attached</goal>
            </goals>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <!--Your comment
                    Replace the mainClass with the path to your Java application.
                    For example: com.bingwebsearch.app.BingWebSearchSample.java.
                    This maps to the following directory structure:
                    src/main/java/com/bingwebsearch/app/BingWebSearchSample.java.
                  -->
                  <mainClass>com.path.to.your.app.APP_NAME.java</mainClass>
                </manifest>
              </archive>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure</artifactId>
      <version>1.9.0</version>
    </dependency>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure.cognitiveservices</groupId>
      <artifactId>azure-cognitiveservices-websearch</artifactId>
      <version>1.0.1</version>
    </dependency>
  </dependencies>

Függőségek deklarálása

Nyissa meg a projektet a kedvenc IDE-környezetében vagy szerkesztőjében, és importálja a következő függőségeket:

import com.microsoft.azure.cognitiveservices.search.websearch.BingWebSearchAPI;
import com.microsoft.azure.cognitiveservices.search.websearch.BingWebSearchManager;
import com.microsoft.azure.cognitiveservices.search.websearch.models.ImageObject;
import com.microsoft.azure.cognitiveservices.search.websearch.models.NewsArticle;
import com.microsoft.azure.cognitiveservices.search.websearch.models.SearchResponse;
import com.microsoft.azure.cognitiveservices.search.websearch.models.VideoObject;
import com.microsoft.azure.cognitiveservices.search.websearch.models.WebPage;

Ha a projektet Maven használatával hozta létre, a csomagnak már deklarálva kell lennie. Ha nem, deklarálja a csomagot most. Például:

package com.bingwebsearch.app

A BingWebSearchSample osztály deklarálása

Deklarálja a BingWebSearchSample osztályt. Ebben szerepelni fog a kódunk legnagyobb része, beleértve a main metódust.

public class BingWebSearchSample {

// The code in the following sections goes here.

}

Kérés létrehozása

A BingWebSearchSample osztályban található runSample metódus létrehozza a kérést. Másolja ezt a kódot az alkalmazásba:

public static boolean runSample(BingWebSearchAPI client) {
    /*
     * This function performs the search.
     *
     * @param client instance of the Bing Web Search API client
     * @return true if sample runs successfully
     */
    try {
        /*
         * Performs a search based on the .withQuery and prints the name and
         * url for the first web pages, image, news, and video result
         * included in the response.
         */
        System.out.println("Searched Web for \"Xbox\"");
        // Construct the request.
        SearchResponse webData = client.bingWebs().search()
            .withQuery("Xbox")
            .withMarket("en-us")
            .withCount(10)
            .execute();

// Code continues in the next section...

A válasz kezelése

Most adjunk hozzá némi kódot a válasz elemzéséhez és az eredmények megjelenítéséhez. Az első weblap, kép, cikk és videó name és url értékét a rendszer megjeleníti, ha szerepel a válaszobjektumban.

/*
* WebPages
* If the search response has web pages, the first result's name
* and url are printed.
*/
if (webData != null && webData.webPages() != null && webData.webPages().value() != null &&
        webData.webPages().value().size() > 0) {
    // find the first web page
    WebPage firstWebPagesResult = webData.webPages().value().get(0);

    if (firstWebPagesResult != null) {
        System.out.println(String.format("Webpage Results#%d", webData.webPages().value().size()));
        System.out.println(String.format("First web page name: %s ", firstWebPagesResult.name()));
        System.out.println(String.format("First web page URL: %s ", firstWebPagesResult.url()));
    } else {
        System.out.println("Couldn't find the first web result!");
    }
} else {
    System.out.println("Didn't find any web pages...");
}
/*
 * Images
 * If the search response has images, the first result's name
 * and url are printed.
 */
if (webData != null && webData.images() != null && webData.images().value() != null &&
        webData.images().value().size() > 0) {
    // find the first image result
    ImageObject firstImageResult = webData.images().value().get(0);

    if (firstImageResult != null) {
        System.out.println(String.format("Image Results#%d", webData.images().value().size()));
        System.out.println(String.format("First Image result name: %s ", firstImageResult.name()));
        System.out.println(String.format("First Image result URL: %s ", firstImageResult.contentUrl()));
    } else {
        System.out.println("Couldn't find the first image result!");
    }
} else {
    System.out.println("Didn't find any images...");
}
/*
 * News
 * If the search response has news articles, the first result's name
 * and url are printed.
 */
if (webData != null && webData.news() != null && webData.news().value() != null &&
        webData.news().value().size() > 0) {
    // find the first news result
    NewsArticle firstNewsResult = webData.news().value().get(0);
    if (firstNewsResult != null) {
        System.out.println(String.format("News Results#%d", webData.news().value().size()));
        System.out.println(String.format("First news result name: %s ", firstNewsResult.name()));
        System.out.println(String.format("First news result URL: %s ", firstNewsResult.url()));
    } else {
        System.out.println("Couldn't find the first news result!");
    }
} else {
    System.out.println("Didn't find any news articles...");
}

/*
 * Videos
 * If the search response has videos, the first result's name
 * and url are printed.
 */
if (webData != null && webData.videos() != null && webData.videos().value() != null &&
        webData.videos().value().size() > 0) {
    // find the first video result
    VideoObject firstVideoResult = webData.videos().value().get(0);

    if (firstVideoResult != null) {
        System.out.println(String.format("Video Results#%s", webData.videos().value().size()));
        System.out.println(String.format("First Video result name: %s ", firstVideoResult.name()));
        System.out.println(String.format("First Video result URL: %s ", firstVideoResult.contentUrl()));
    } else {
        System.out.println("Couldn't find the first video result!");
    }
} else {
    System.out.println("Didn't find any videos...");
}

A fő metódus deklarálása

Ebben az alkalmazásban a fő metódusban szerepel az ügyfelet példányosító, a subscriptionKey azonosítót érvényesítő és a runSample metódust meghívő kód. Folytatás előtt győződjön meg arról, hogy érvényes előfizetői azonosítót adott meg az Azure-fiókjához.

public static void main(String[] args) {
    try {
        // Enter a valid subscription key for your account.
        final String subscriptionKey = "YOUR_SUBSCRIPTION_KEY";
        // Instantiate the client.
        BingWebSearchAPI client = BingWebSearchManager.authenticate(subscriptionKey);
        // Make a call to the Bing Web Search API.
        runSample(client);
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

A program futtatása

Az utolsó lépés a program futtatása.

mvn compile exec:java

Az erőforrások eltávolítása

Ha végzett ezzel a projekttel, ne felejtse el eltávolítani az előfizetői azonosítót a program kódjából.

Következő lépések

Lásd még

A Bing Web Search ügyféloldali kódtára megkönnyíti a Bing Web Search integrálását a Node.js alkalmazásba. Ebben a rövid útmutatóban elsajátíthatja az ügyfél-példányosítás, a kérésküldés és a válaszmegjelenítés módját.

Szeretné most rögtön megtekinteni a kódot? A JavaScripthez készült Bing Search ügyfélkódtárak mintái a GitHubon érhetők el.

Előfeltételek

Az alábbi dolgokra szüksége lesz a rövid útmutató futtatásához:

  • A Node.js 6-os vagy újabb verziója
  • Egy előfizetői azonosító

Azure-erőforrás létrehozása

Kezdje el használni a Bing Web Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:

Bing Search v7-erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős szintre éles környezetben.

Többszolgáltatásos erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.

A fejlesztési környezet beállítása

Kezdjük azzal, hogy beállítjuk a fejlesztési környezetet a Node.js-projektünkhöz.

  1. Hozzon létre egy új könyvtárat a projekthez:

    mkdir YOUR_PROJECT
    
  2. Hozzon létre egy új csomagfájlt:

    cd YOUR_PROJECT
    npm init
    
  3. Most telepítsen néhány Azure-modult, és adja hozzá őket a package.jsonkövetkezőhöz:

    npm install --save @azure/cognitiveservices-websearch
    npm install --save @azure/ms-rest-azure-js
    

Projekt létrehozása és a szükséges modulok deklarálása

Hozzon létre egy új Node.js-projektet a kedvenc IDE-környezete vagy szerkesztője segítségével ugyanabban a könyvtárban, ahol a package.json is található. Példa: sample.js.

Ezután másolja ezt a kódot a projektbe. Ez betölti az előző szakaszban telepített modulokat.

const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');

Az ügyfél példányosítása

Ez a kód az @azure/cognitiveservices-websearch modul segítségével példányosítja az ügyfelet. Folytatás előtt győződjön meg arról, hogy érvényes előfizetői azonosítót adott meg az Azure-fiókjához.

let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);

Kérés indítása és az eredmények megjelenítése

Küldjön egy keresési lekérdezést a Bing Web Searchnek az ügyfél segítségével. Ha a válaszban szerepel a properties tömb bármelyik eleméhez tartozó eredmény, a result.value megjelenik a konzolon.

webSearchApiClient.web.search('seahawks').then((result) => {
    let properties = ["images", "webPages", "news", "videos"];
    for (let i = 0; i < properties.length; i++) {
        if (result[properties[i]]) {
            console.log(result[properties[i]].value);
        } else {
            console.log(`No ${properties[i]} data`);
        }
    }
}).catch((err) => {
    throw err;
})

A program futtatása

Az utolsó lépés a program futtatása.

Az erőforrások eltávolítása

Ha végzett ezzel a projekttel, ne felejtse el eltávolítani az előfizetői azonosítót a program kódjából.

Következő lépések

Lásd még

A Bing Web Search ügyfélkódtára megkönnyíti a Bing Web Search integrálását a Python-alkalmazásba. Ebben a rövid útmutatóban elsajátíthatja a kérésküldésnek, a JSON-válaszok fogadásának, valamint az eredmények szűrésének és elemzésének módját.

Szeretné most rögtön megtekinteni a kódot? A Python Bing Search ügyfélkódtárainak mintái a GitHubon érhetők el.

Előfeltételek

A Bing Web Search SDK kompatibilis a Python 2.7 vagy 3.6+-tal. Jelen rövid útmutatóhoz ajánlott egy virtuális környezet használata.

  • Python 2.7 vagy 3.6+
  • virtualenv a Python 2.7 esetében
  • venv a Python 3.x esetében

Azure-erőforrás létrehozása

Kezdje el használni a Bing Web Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:

Bing Search v7-erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős szintre éles környezetben.

Többszolgáltatásos erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.

A virtuális környezet létrehozása és konfigurálása

A virtuális környezet létrehozására és konfigurálására vonatkozó útmutatás eltérő a Python 2.x és a Python 3.x használata esetében. Az alábbi lépéseket követve hozza létre és inicializálja a virtuális környezetet.

Python 2.x

Virtuális környezet létrehozása a virtualenv segítségével Python 2.7 használata esetén:

virtualenv mytestenv

Aktiválja a környezetet:

cd mytestenv
source bin/activate

Telepítse a Bing Web Search SDK függőségeit:

python -m pip install azure-cognitiveservices-search-websearch

Python 3.x

Virtuális környezet létrehozása a venv segítségével Python 3.x használata esetén:

python -m venv mytestenv

Aktiválja a környezetet:

mytestenv\Scripts\activate.bat

Telepítse a Bing Web Search SDK függőségeit:

cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch

Ügyfél létrehozása és az első eredmények megjelenítése

Most, hogy beállítottuk a virtuális környezetet, és telepítettük a függőségeket, ideje létrehozni az ügyfelet. Az ügyfél fogja kezelni a Bing Web Search API-ra küldött kéréseket és az onnan érkező válaszokat.

Ha a válasz tartalmaz weblapokat, képeket, cikkeket vagy videókat, a rendszer mindegyikből megjeleníti az elsőt.

  1. Hozzon létre egy új Python-projektet a kedvenc IDE-környezetében vagy szerkesztőjében.

  2. Másolja ezt a mintakódot a projektbe. endpointlehet az alábbi globális végpont, vagy az erőforráshoz tartozó Azure Portal megjelenő egyéni altartományvégpont:

    # Import required modules.
    from azure.cognitiveservices.search.websearch import WebSearchClient
    from azure.cognitiveservices.search.websearch.models import SafeSearch
    from msrest.authentication import CognitiveServicesCredentials
    
    # Replace with your subscription key.
    subscription_key = "YOUR_SUBSCRIPTION_KEY"
    
    # Instantiate the client and replace with your endpoint.
    client = WebSearchClient(endpoint="YOUR_ENDPOINT", credentials=CognitiveServicesCredentials(subscription_key))
    
    # Make a request. Replace Yosemite if you'd like.
    web_data = client.web.search(query="Yosemite")
    print("\r\nSearched for Query# \" Yosemite \"")
    
    '''
    Web pages
    If the search response contains web pages, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.web_pages, 'value'):
    
        print("\r\nWebpage Results#{}".format(len(web_data.web_pages.value)))
    
        first_web_page = web_data.web_pages.value[0]
        print("First web page name: {} ".format(first_web_page.name))
        print("First web page URL: {} ".format(first_web_page.url))
    
    else:
        print("Didn't find any web pages...")
    
    '''
    Images
    If the search response contains images, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.images, 'value'):
    
        print("\r\nImage Results#{}".format(len(web_data.images.value)))
    
        first_image = web_data.images.value[0]
        print("First Image name: {} ".format(first_image.name))
        print("First Image URL: {} ".format(first_image.url))
    
    else:
        print("Didn't find any images...")
    
    '''
    News
    If the search response contains news, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.news, 'value'):
    
        print("\r\nNews Results#{}".format(len(web_data.news.value)))
    
        first_news = web_data.news.value[0]
        print("First News name: {} ".format(first_news.name))
        print("First News URL: {} ".format(first_news.url))
    
    else:
        print("Didn't find any news...")
    
    '''
    If the search response contains videos, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.videos, 'value'):
    
        print("\r\nVideos Results#{}".format(len(web_data.videos.value)))
    
        first_video = web_data.videos.value[0]
        print("First Videos name: {} ".format(first_video.name))
        print("First Videos URL: {} ".format(first_video.url))
    
    else:
        print("Didn't find any videos...")
    
  3. Cserélje le a SUBSCRIPTION_KEY értékét egy érvényes előfizetői azonosítóra.

  4. Cserélje le a elemet YOUR_ENDPOINT a végpont URL-címére a portálon, és távolítsa el a "bing/v7.0" szakaszt a végpontról.

  5. Futtassa a programot. Példa: python your_program.py.

Függvények definiálása és az eredmények szűrése

Most, hogy első alkalommal hívta meg a Bing Web Search API-t, tekintsünk meg néhány függvényt. Az alábbi szakaszok a lekérdezések finomítására és az eredmények szűrésére szolgáló SDK-funkciókat emelik ki. Minden függvény hozzáadható az előző szakaszban létrehozott Python-programhoz.

A Bing által visszaadott eredmények számának korlátozása

Ez a minta a count és offset a paraméterek használatával korlátozza az SDK search metódusával visszaadott eredmények számát. Az első eredményhez tartozó name és url értékét a rendszer megjeleníti.

  1. Adja hozzá ezt a kódot a Python-projekthez:

     # Declare the function.
     def web_results_with_count_and_offset(subscription_key):
         client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
    
         try:
             '''
             Set the query, offset, and count using the SDK's search method. See:
             https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
             '''
             web_data = client.web.search(query="Best restaurants in Seattle", offset=10, count=20)
             print("\r\nSearching for \"Best restaurants in Seattle\"")
    
             if web_data.web_pages.value:
                 '''
                 If web pages are available, print the # of responses, and the first and second
                 web pages returned.
                 '''
                 print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                 first_web_page = web_data.web_pages.value[0]
                 print("First web page name: {} ".format(first_web_page.name))
                 print("First web page URL: {} ".format(first_web_page.url))
    
             else:
                 print("Didn't find any web pages...")
    
         except Exception as err:
             print("Encountered exception. {}".format(err))
    
  2. Futtassa a programot.

Hírek és frissesség szűrése

Ez a minta a és freshness a response_filter paraméterek használatával szűri a keresési eredményeket az SDK metódusávalsearch. A visszaadott keresési eredmények a sajtóhírekre, azon belül pedig a Bing által az elmúlt 24 órában észlelt oldalakra van korlátozva. Az első eredményhez tartozó name és url értékét a rendszer megjeleníti.

  1. Adja hozzá ezt a kódot a Python-projekthez:

    # Declare the function.
    def web_search_with_response_filter(subscription_key):
        client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
        try:
            '''
            Set the query, response_filter, and freshness using the SDK's search method. See:
            https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(query="xbox",
                response_filter=["News"],
                freshness="Day")
            print("\r\nSearching for \"xbox\" with the response filter set to \"News\" and freshness filter set to \"Day\".")
    
            '''
            If news articles are available, print the # of responses, and the first and second
            articles returned.
            '''
            if web_data.news.value:
    
                print("# of news results: {}".format(len(web_data.news.value)))
    
                first_web_page = web_data.news.value[0]
                print("First article name: {} ".format(first_web_page.name))
                print("First article URL: {} ".format(first_web_page.url))
    
                print("")
    
                second_web_page = web_data.news.value[1]
                print("\nSecond article name: {} ".format(second_web_page.name))
                print("Second article URL: {} ".format(second_web_page.url))
    
            else:
                print("Didn't find any news articles...")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
    # Call the function.
    web_search_with_response_filter(subscription_key)
    
  2. Futtassa a programot.

A biztonságos keresés, a válaszszám és az előléptetés szűrő használata

Ez a minta a answer_count, promoteés safe_search paraméterek használatával szűri a keresési eredményeket az SDK metódusávalsearch. A kód megjeleníti az első eredmény name és url értékét.

  1. Adja hozzá ezt a kódot a Python-projekthez:

    # Declare the function.
    def web_search_with_answer_count_promote_and_safe_search(subscription_key):
    
        client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
    
        try:
            '''
            Set the query, answer_count, promote, and safe_search parameters using the SDK's search method. See:
            https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(
                query="Niagara Falls",
                answer_count=2,
                promote=["videos"],
                safe_search=SafeSearch.strict  # or directly "Strict"
            )
            print("\r\nSearching for \"Niagara Falls\"")
    
            '''
            If results are available, print the # of responses, and the first result returned.
            '''
            if web_data.web_pages.value:
    
                print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                first_web_page = web_data.web_pages.value[0]
                print("First web page name: {} ".format(first_web_page.name))
                print("First web page URL: {} ".format(first_web_page.url))
    
            else:
                print("Didn't see any Web data..")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
  2. Futtassa a programot.

Az erőforrások eltávolítása

Ha végzett ezzel a projekttel, ne felejtse el eltávolítani az előfizetői azonosítót a program kódjából és inaktiválni a virtuális környezetet.

Következő lépések

Lásd még