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


Oktatóanyag: Egyoldalas Visual Search-webalkalmazás létrehozása

Figyelmeztetés

2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search-szolgáltatásokba. Ez a dokumentáció csak referenciaként érhető el. 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 utasításokért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.

A Bing Visual Search API elemzéseket ad vissza egy képhez. Feltölthet egy képet, vagy megadhat egy URL-címet az egyiknek. Az elemzések vizuálisan hasonló képek, vásárlási források, a képet tartalmazó weblapok és egyebek. A Bing Visual Search API által visszaadott elemzések hasonlóak a Bing.com/images.

Ez az oktatóanyag bemutatja, hogyan terjeszthet ki egy egyoldalas webalkalmazást a Bing Image Search API-hoz. Az oktatóanyag megtekintéséhez vagy az itt használt forráskód lekéréséhez lásd : Oktatóanyag: Egyoldalas alkalmazás létrehozása a Bing Image Search API-hoz.

Az alkalmazás teljes forráskódja (a Bing Visual Search API használatára való kiterjesztése után) elérhető a GitHubon.

Előfeltételek

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

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

Bing Search v7-erőforrás

  • A Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Válassza ki a tarifacsomagot S9 .

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

  • A 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.

Hívja meg a Bing Visual Search API-t, és kezelje a választ

Szerkessze a Bing Image Search oktatóanyagot, és adja hozzá a következő kódot az <script> elem végéhez (és a záró </script> címke előtt). A következő kód kezeli az API vizuális keresési válaszát, végigvezeti az eredményeket, és megjeleníti azokat:

function handleVisualSearchResponse(){
    if(this.status !== 200){
        console.log(this.responseText);
        return;
    }
    let json = this.responseText;
    let response = JSON.parse(json);
    for (let i =0; i < response.tags.length; i++) {
        let tag = response.tags[i];
        if (tag.displayName === '') {
            for (let j = 0; j < tag.actions.length; j++) {
                let action = tag.actions[j];
                if (action.actionType === 'VisualSearch') {
                    let html = '';
                    for (let k = 0; k < action.data.value.length; k++) {
                        let item = action.data.value[k];
                        let height = 120;
                        let width = Math.max(Math.round(height * item.thumbnail.width / item.thumbnail.height), 120);
                        html += "<img src='"+ item.thumbnailUrl + "&h=" + height + "&w=" + width + "' height=" + height + " width=" + width + "'>";
                    }
                    showDiv("insights", html);
                    window.scrollTo({top: document.getElementById("insights").getBoundingClientRect().top, behavior: "smooth"});
                }
            }
        }
    }
}

A következő kód egy keresési kérést küld az API-nak egy eseményfigyelő használatával a hívásához handleVisualSearchResponse():

function bingVisualSearch(insightsToken){
    let visualSearchBaseURL = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch',
        boundary = 'boundary_ABC123DEF456',
        startBoundary = '--' + boundary,
        endBoundary = '--' + boundary + '--',
        newLine = "\r\n",
        bodyHeader = 'Content-Disposition: form-data; name="knowledgeRequest"' + newLine + newLine;

    let postBody = {
        imageInfo: {
            imageInsightsToken: insightsToken
        }
    }
    let requestBody = startBoundary + newLine;
    requestBody += bodyHeader;
    requestBody += JSON.stringify(postBody) + newLine + newLine;
    requestBody += endBoundary + newLine;

    let request = new XMLHttpRequest();

    try {
        request.open("POST", visualSearchBaseURL);
    } 
    catch (e) {
        renderErrorMessage("Error performing visual search: " + e.message);
    }
    request.setRequestHeader("Ocp-Apim-Subscription-Key", getSubscriptionKey());
    request.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
    request.addEventListener("load", handleVisualSearchResponse);
    request.send(requestBody);
}

Megállapítási jogkivonat rögzítése

Adja hozzá a következő kódot az searchItemsRenderer objektumhoz. Ez a kód hozzáad egy hasonló keresése hivatkozást, amely meghívja a bingVisualSearch függvényt, ha rákattintanak. A függvény argumentumként kapja meg a imageInsightsToken függvényt.

html.push("<a href='javascript:bingVisualSearch(\"" + item.imageInsightsToken + "\");'>find similar</a><br>");

Hasonló képek megjelenítése

Adja hozzá a következő HTML-kódot a 601. sorban. Ez a kód hozzáad egy elemet a Bing Visual Search API-hívás eredményeinek megjelenítéséhez:

<div id="insights">
    <h3><a href="#" onclick="return toggleDisplay('_insights')">Similar</a></h3>
    <div id="_insights" style="display: none"></div>
</div>

A rendelkezésre álló új JavaScript-kódok és HTML-elemek segítségével a keresési eredmények egy hasonló keresése hivatkozással jelennek meg. Kattintson a hivatkozásra a kiválasztott képhez hasonló képeket tartalmazó Hasonló szakasz feltöltéséhez. Lehetséges, hogy ki kell bontania a Hasonló szakaszt a képek megjelenítéséhez.

Következő lépések