Svarsstruktur och svarstyper för API för webbsökning i Bing

Varning

Den 30 oktober 2020 flyttade Bing-sökning API:er från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.

När du skickar en sökbegäran i Bing Web Search returneras ett SearchResponse objekt i svarstexten. Objektet innehåller ett fält för varje svar som Bing fastställde var relevant för frågan. Det här exemplet illustrerar ett svarsobjekt om Bing returnerade alla svar:

{
    "_type": "SearchResponse",
    "queryContext": {...},
    "webPages": {...},
    "images": {...},
    "relatedSearches": {...},
    "videos": {...},
    "news": {...},
    "spellSuggestion": {...},
    "computation": {...},
    "timeZone": {...},
    "rankingResponse": {...}
}, ...

Vanligtvis returnerar Bing Web Search en delmängd av svaren. Om frågetermen till exempel seglade jollar kan svaret innehålla webPages, imagesoch rankingResponse. Om du inte har använt responseFilter för att filtrera bort webbsidor innehåller webpages svaret alltid svaren och rankingResponse .

Anteckning

Eftersom URL-format och parametrar kan komma att ändras utan föregående meddelande använder du alla URL:er som de är. Du bör inte använda beroenden för URL-formatet eller parametrarna, förutom där det anges.

Svar på webbsidor

Svaret på webPages innehåller en lista med länkar till webbsidor som Bing Web Search har fastställt var relevanta för frågan. Varje webbsida i listan innehåller: sidans namn, URL, visnings-URL, en kort beskrivning av innehållet och det datum då Bing hittade innehållet.

{
    "id": "https:\/\/api.cognitive.microsoft.com\/api\/v7\/#WebPages.0",
    "name": "Dinghy sailing",
    "url": "https:\/\/www.bing.com\/cr?IG=3A43CA5...",
    "displayUrl": "https:\/\/en.contoso.com\/wiki\/Dinghy_sailing",
    "snippet": "Dinghy sailing is the activity of sailing small boats...",
    "dateLastCrawled": "2017-04-05T16:25:00"
}, ...

Använd name och url för att skapa en hyperlänk som tar användaren till webbsidan.

Svar på bilder

Svaret på bilderna innehåller en lista över bilder som Bing trodde var relevanta för frågan. Varje bild i listan innehåller URL:en för bilden, dess storlek, dess dimensioner och dess kodningsformat. Bildobjektet inkluderar även URL för en miniatyrbild av bilden och miniatyrbildens mått.

{
    "name": "Rich Passage Sailing Dinghy",
    "webSearchUrl": "https:\/\/www.bing.com\/cr?IG=3A43CA5CA64...",
    "thumbnailUrl": "https:\/\/tse1.mm.bing.net\/th?id=OIP....",
    "datePublished": "2011-10-29T11:26:00",
    "contentUrl": "http:\/\/upload.contoso.com\/sailing\/...",
    "hostPageUrl": "http:\/\/www.bing.com\/cr?IG=3A43CA5CA6464....",
    "contentSize": "79239 B",
    "encodingFormat": "jpeg",
    "hostPageDisplayUrl": "http:\/\/en.contoso.com\/wiki\/File...",
    "width": 526,
    "height": 688,
    "thumbnail": {
        "width": 229,
        "height": 300
    },
    "insightsSourcesSummary": {
        "shoppingSourcesCount": 0,
        "recipeSourcesCount": 0
    }
}, ...

Beroende på användarens enhet skulle du vanligtvis visa en delmängd av miniatyrbilderna, med ett alternativ för användaren att bläddra igenom de återstående bilderna.

Du kan även expandera miniatyrbilden när användaren hovrar markören över den. Se till att tillskriva bildkällan om du expanderar bilden. Till exempel genom att extrahera värden från hostPageDisplayUrl och visa den under bilden. Information om att ändra storlek på miniatyrbilden finns i Resizing and Cropping Thumbnails (Ändra storlek på och beskär miniatyrbilder).

Om användaren klickar på miniatyrbilden använder webSearchUrl du för att ta användaren till Bings sökresultatsida för bilder, som innehåller ett kollage av bilderna.

Mer information om bildsvar och bilder finns i API för bildsökning.

RelatedSearches-svaret innehåller en lista över de mest populära relaterade frågorna från andra användare. Varje fråga i listan innehåller en frågesträng (text), en frågesträng med träffmarkeringstecken (displayText) och en URL (webSearchUrl) till Bings sökresultatsida för den frågan.

{
    "text": "dinghy racing teams",
    "displayText": "dinghy racing teams",
    "webSearchUrl": "https:\/\/www.bing.com\/cr?IG=96C4CF214A0..."
}, ...

Använd frågesträngen displayTextwebSearchUrl och URL:en för att skapa en hyperlänk som tar användaren till sidan med sökresultat i Bing för den relaterade frågan. Du kan också använda frågesträngen text i din egen API-fråga för webbsökning och visa resultatet själv.

Information om hur du hanterar markörer i finns i displayTextTräffmarkering.

Följande visar ett exempel på användningen av relaterade frågor i Bing.com.

Exempel på relaterade sökningar i Bing

Svar på videor

Videosvaret innehåller en lista över videor som Bing trodde var relevanta för frågan. Varje video i listan innehåller videons URL, dess varaktighet, dess dimensioner och dess kodningsformat. Videoobjektet innehåller även webbadressen till en miniatyrbild av videon och miniatyrbildens mått.

{
    "name": "Sailing dinghy",
    "description": "Northwind Traders is a 12 foot gunter rigged...",
    "webSearchUrl": "https:\/\/www.bing.com\/cr?IG=1CAE739681D84...",
    "thumbnailUrl": "https:\/\/tse2.mm.bing.net\/th?id=OVP.wsKiL...",
    "datePublished": "2013-11-06T01:56:28",
    "publisher": [{
        "name": "Fabrikam"
    }],
    "contentUrl": "https:\/\/www.fabrikam.com\/watch?v=MrVBWZpJjX",
    "hostPageUrl": "https:\/\/www.bing.com\/cr?IG=1CAE739681D8400DB...",
    "encodingFormat": "mp4",
    "hostPageDisplayUrl": "https:\/\/www.fabrikam.com\/watch?v=MrBWZpJjXo",
    "width": 1280,
    "height": 720,
    "duration": "PT3M47S",
    "motionThumbnailUrl": "https:\/\/tse2.mm.bing.net\/th?id=OM.oa...",
    "embedHtml": "<iframe width=\"1280\" height=\"720\" src=\"http:\/\/www....><\/iframe>",
    "allowHttpsEmbed": true,
    "viewCount": 19089,
    "thumbnail": {
        "width": 300,
        "height": 168
    },
    "allowMobileEmbed": true,
    "isSuperfresh": false
}, ...

Beroende på användarens enhet skulle du vanligtvis visa en delmängd av videorna med ett alternativ för användaren att visa de återstående videorna. Du skulle visa en miniatyrbild av videon med videons längd, beskrivning (namn) och attribution (utgivare).

När användaren hovrar över miniatyrbilden kan du använda motionThumbnailUrl för att spela upp en miniatyrversion av videon. Se till att du tillskriver ursprunget när du visar en video.

Om användaren klickar på miniatyrbilden finns följande visningsalternativ för videon:

  • Använd hostPageUrl för att visa videon på värdwebbplatsen (till exempel YouTube)
  • Använd webSearchUrl för att visa videon i Bing-webbläsaren
  • Använd embedHtml för att bädda in videon i din egen upplevelse

Mer information om videosvar och videor finns i API för videosökning.

Nyhetssvar

Nyhetssvaret innehåller en lista över nyhetsartiklar som Bing trodde var relevanta för frågan. Varje nyhetsartikel i listan innehåller artikels namn, beskrivning och webbadressen till artikeln på värdens webbplats. Om artikeln innehåller en bild innehåller objektet även en miniatyr för bilden.

{
    "name": "WC Sailing Qualifies for America Trophy with...",
    "url": "http:\/\/www.bing.com\/cr?IG=3445EEF15DAF4FFFBF7...",
    "image": {
        "contentUrl": "http:\/\/www.contoso.com\/sports\/sail...",
        "thumbnail": {
            "contentUrl": "https:\/\/www.bing.com\/th?id=ON.1...",
            "width": 400,
            "height": 272
        }
    },
    "description": "The WC sailing team qualified for a...",
    "provider": [{
        "_type": "Organization",
        "name": "contoso.com"
    }],
    "datePublished": "2017-04-16T21:56:00"
}, ...

Beroende på användarens enhet skulle du visa en delmängd av nyhetsartiklarna med ett alternativ för användaren att visa de återstående artiklarna. Använd name och url till att skapa en hyperlänk som tar användaren till nyhetsartikeln på värdens webbplats. Om artikeln innehåller en bild kan du göra bilden klickbar med .url Se till att du tillskriver artikeln med provider.

Mer information om nyhetssvar och nyhetsartiklar finns i API för nyhetssökning.

Beräkningssvar

Om användaren anger ett matematiskt uttryck eller en enhetskonverteringsfråga kan svaret innehålla ett beräkningssvar . Svaret computation innehåller det normaliserade uttrycket och dess resultat.

En enhetskonverteringsfråga är en fråga som konverterar en enhet till en annan. Till exempel , Hur många meter på 10 meter? eller Hur många matskedar i en 1/4 kopp?

Följande visar svaret computation för Hur många meter på 10 meter?

"computation": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#Computation",
    "expression": "10 meters",
    "value": "32.808399 feet"
}, ...

Följande visar exempel på matematiska frågor och deras motsvarande computation svar.

Query: (5+3)(10/2)+8
Encoded query: %285%2B3%29%2810%2F2%29%2B8
"computation": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#Computation",
    "expression": "((5+3)*(10\/2))+8",
    "value": "48"
}
Query: sqrt(4^2+8^2)
Encoded query: sqrt%284^2%2B8^2%29
"computation": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#Computation",
    "expression": "sqrt((4^2)+(8^2))",
    "value": "8.94427191"
}
Query: 30 6/8 - 18 8/16
Encoded query: 30%206%2F8%20-%2018%208%2F16
"computation": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#WolframAlpha",
    "expression": "30 6\/8-18 8\/16",
    "value": "12.25"
}
Query: 8^2+11^2-2*8*11*cos(37)
Encoded query: 8^2%2B11^2-2*8*11*cos%2837%29
"computation": {
        "id": "https:\/\/www.bing.com\/api\/v7\/#Computation",
        "expression": "(8^2)+(11^2)-(2*8*11*cos(37))",
        "value": "44.4401502"
}

Ett matematiskt uttryck kan innehålla följande symboler:

Symbol Beskrivning
+ Addition
- Subtraktion
/ Division
* Multiplikation
^ Ström
! Fakultet
. Decimal
() Prioritetsgruppering
[] Funktion

Ett matematiskt uttryck kan innehålla följande konstanter:

Symbol Description
Pi 3.14159...
Grad Grad
i Imaginärt nummer
e e, 2.71828...
GoldenRatio Gyllene förhållande, 1,61803...

Ett matematiskt uttryck kan innehålla följande funktioner:

Symbol Description
Sortera Kvadratroten
Sin[x], Cos[x], Tan[x]
Csc[x], Sec[x], Cot[x]
Trigonometriska funktioner (med argument i radianer)
ArcSin[x], ArcCos[x], ArcTan[x]
ArcCsc[x], ArcSec[x], ArcCot[x]
Invertera trigonometriska funktioner (vilket ger resultat i radianer)
Exp[x], E^x Exponentiell funktion
Log[x] Naturlig logaritm
Sinh[x], Cosh[x], Tanh[x]
Csch[x], Sech[x], Coth[x]
Hyperboliska funktioner
ArcSinh[x], ArcCosh[x], ArcTanh[x]
ArcCsch[x], ArcSech[x], ArcCoth[x]
Invertera hyperboliska funktioner

Matematiska uttryck som innehåller variabler (till exempel 4x+6=18, där x är variabeln) stöds inte.

TimeZone-svar

Om användaren anger en tids- eller datumfråga kan svaret innehålla ett TimeZone-svar . Det här svaret stöder implicita eller explicita frågor. En implicit fråga, till exempel Vilken tid är den? returnerar den lokala tiden baserat på användarens plats. En explicit fråga, till exempel Vilken tid är den i Seattle?, returnerar den lokala tiden för Seattle, WA.

Svaret timeZone innehåller namnet på platsen, aktuellt UTC-datum och -tid på den angivna platsen och UTC-förskjutningen. Om platsens gräns ligger inom flera tidszoner innehåller svaret aktuellt UTC-datum och tid för alla tidszoner inom gränsen. Eftersom Florida State till exempel ligger inom två tidszoner innehåller svaret det lokala datumet och tiden för båda tidszonerna.

Om frågan begär tidpunkten för en stat eller ett land/region, bestämmer Bing den primära staden inom platsens geografiska gräns och returnerar den primaryCityTime i fältet. Om gränsen innehåller flera tidszoner returneras de återstående tidszonerna i fältet otherCityTimes .

Nedan visas exempelfrågor som returnerar svaret timeZone .

Query: What time is it?

"timeZone": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#TimeZone",
    "primaryCityTime": {
        "location": "Redmond, Washington, United States",
        "time": "2015-10-27T08:38:12.1189231Z",
        "utcOffset": "UTC-7"
    }
}

Query: What time is it in the Pacific time zone?

"timeZone": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#TimeZone",
    "primaryCityTime": {
        "location": "Pacific Time Zone",
        "time": "2015-10-23T12:33:19.0728146Z",
        "utcOffset": "UTC-7"
    }
}

Query: Time in Florida?

"timeZone": {
        "id": "https:\/\/www.bing.com\/api\/v7\/#TimeZone",
        "primaryCityTime": {
            "location": "Tallahassee, Florida, United States",
            "time": "2015-10-23T13:04:56.6774389Z",
            "utcOffset": "UTC-4"
        },
        "otherCityTimes": [{
            "location": "Pensacola",
            "time": "2015-10-23T12:04:56.6664294Z",
            "utcOffset": "UTC-5"
        }]
}

Query: What time is it in the U.S.

"timeZone": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#TimeZone",
    "primaryCityTime": {
        "location": "Washington, D.C., United States",
        "time": "2015-10-23T15:27:59.8892745Z",
        "utcOffset": "UTC-4"
    },
    "otherCityTimes": [{
        "location": "Honolulu",
        "time": "2015-10-23T09:27:59.8892745Z",
        "utcOffset": "UTC-10"
    },
    {
        "location": "Anchorage",
        "time": "2015-10-23T11:27:59.8892745Z",
        "utcOffset": "UTC-8"
    },
    {
        "location": "Phoenix",
        "time": "2015-10-23T12:27:59.8892745Z",
        "utcOffset": "UTC-7"
    },
    {
        "location": "Los Angeles",
        "time": "2015-10-23T12:27:59.8942788Z",
        "utcOffset": "UTC-7"
    },
    {
        "location": "Denver",
        "time": "2015-10-23T13:27:59.8812681Z",
        "utcOffset": "UTC-6"
    },
    {
        "location": "Chicago",
        "time": "2015-10-23T14:27:59.8892745Z",
        "utcOffset": "UTC-5"
    }]
}

SpellSuggestion-svar

Om Bing fastställer att användaren kan ha tänkt söka efter något annat innehåller svaret ett SpellSuggestions-objekt . Om användaren till exempel söker efter Carlos Pen kan Bing fastställa att användaren sannolikt hade för avsikt att söka efter Carlos Pena i stället (baserat på tidigare sökningar av andra av Carlos Pen). Nedan visas ett exempel på stavningssvar.

"spellSuggestions": {
    "id": "https:\/\/www.bing.com\/api\/v7\/#SpellSuggestions",
    "value": [{
        "text": "carlos pena",
        "displayText": "carlos pena"
    }]
}, ...

Svarshuvuden

Svaren från API:et för webbsökning i Bing kan innehålla följande rubriker:

Huvud Description
X-MSEdge-ClientID Det unika ID som Bing har tilldelat användaren
BingAPIs-Market Den marknad som användes för att uppfylla begäran
BingAPIs-TraceId Loggposten på Bing API-servern för den här begäran (för support)

Det är särskilt viktigt att bevara klient-ID:t och returnera det med efterföljande begäranden. När du gör detta använder sökningen tidigare kontext i rangordning av sökresultat och ger även en konsekvent användarupplevelse.

Men när du anropar API:et för webbsökning i Bing från JavaScript kan webbläsarens inbyggda säkerhetsfunktioner (CORS) hindra dig från att komma åt värdena för dessa huvuden.

Om du vill få åtkomst till rubrikerna kan du göra en BEGÄRAN om API för webbsökning i Bing via en CORS-proxy. Svaret från en sådan proxy har en Access-Control-Expose-Headers rubrik som filtrerar svarshuvuden och gör dem tillgängliga för JavaScript.

Det är enkelt att installera en CORS-proxy för att ge vår självstudieapp åtkomst till valfria klienthuvuden. Installera Node.js om du inte redan har det. Ange sedan följande kommando i en kommandotolk.

npm install -g cors-proxy-server

Ändra sedan slutpunkten för API:et för webbsökning i Bing i HTML-filen till:
http://localhost:9090/https://api.cognitive.microsoft.com/bing/v7.0/search

Slutligen startar du CORS-proxyn med följande kommando:

cors-proxy-server

Lämna kommandofönstret öppet medan du använder självstudieappen. Om du stänger fönstret stoppas proxyn. I det expanderbara avsnittet om HTTP-huvuden nedan kan du nu se X-MSEdge-ClientID-huvudet (bland annat) under sökresultatet och du kan kontrollera att det är samma för varje begäran.

Svarshuvuden i produktion

CORS-proxymetoden som beskrivs i föregående svar är lämplig för utveckling, testning och inlärning.

I en produktionsmiljö bör du vara värd för ett skript på serversidan på samma domän som webbsidan som använder API:et för webbsökning i Bing. Det här skriptet ska göra API-anrop på begäran från webbsidan JavaScript och skicka alla resultat, inklusive rubriker, tillbaka till klienten. Eftersom de två resurserna (sida och skript) delar ett ursprung används inte CORS och de särskilda rubrikerna är tillgängliga för JavaScript på webbsidan.

Den här metoden skyddar även din API-nyckel från exponering för allmänheten, eftersom endast skriptet på serversidan behöver den. Skriptet kan använda en annan metod för att kontrollera att begäran har behörighet.

Nedan visas hur Bing använder stavningsförslaget.

Exempel på stavningsförslag i Bing

Nästa steg

Se även