2016-07-03 19 views
2

ich das folgende Snippet aktualisiert haben, die ich früher mit dem beta version of the Bing Web Search API erstellt verwenden, um die newer domain name: api.cognitive.microsoft.com/bing/v5.0/search jetzt, dass Bing Web Search API verwendet -Benötigen Ergebnisse Hilfe von Bing Web Search API v5 zurück Verständnis

Sie bitte Ihre eigene Bing-API-Schlüssel ersetzen die Probe

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Bing Search v5 - show all results</title> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
<script> 
 

 
var total; 
 
var ofst = 0; 
 
var pgcnt=50; 
 
var results = ''; 
 

 
var burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=Bill Gates&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us&freshness=Month"; //737 results 
 
//var burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=Bill Gates&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us"; //304 results 
 
//var burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=site:mvark.blogspot.com&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us&freshness=Month"; 
 

 
$(function() { 
 

 
function xhr_get(url) { 
 
    return $.ajax({ 
 
    url: url, 
 
    beforeSend: function(xhrObj){ 
 
       // Request headers 
 
       xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","abc123"); //replace value with your own key 
 
      }, 
 
    type: "GET", 
 

 
    }) 
 
.done(function(data) { 
 
     \t \t total = data.webPages.totalEstimatedMatches; 
 
\t \t len = data.webPages.value.length 
 
\t \t for (i=0; i<len; i++) 
 
\t \t { 
 
\t \t results += "<p><a href='" + data.webPages.value[i].url + "'>" + data.webPages.value[i].name + "</a>: " + data.webPages.value[i].snippet + "</p>"; 
 
\t \t } 
 
\t \t $('#content').html(results); 
 
\t ofst += pgcnt; 
 
\t if (total > ofst) { 
 

 
\t burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=Bill Gates&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us&freshness=Month"; 
 
\t //burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=Bill Gates&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us"; 
 
\t //burl = "https://api.cognitive.microsoft.com/bing/v5.0/search/?q=site:mvark.blogspot.com&count=" + pgcnt + "&offset=" + ofst + "&mkt=en-us&freshness=Month"; 
 
\t xhr_get(burl); 
 
\t } 
 
\t else { console.log('No more results to show'); 
 
\t } 
 
    }) 
 
} 
 

 
xhr_get(burl); 
 

 
}); 
 
</script> 
 
Results: <div id="content">Fetching...</div> 
 
</body> 
 
</html>

laufen 10

Ich sehe einen Unterschied zwischen den Ergebnissen, die früher zurückgegeben wurden & Ergebnisse jetzt abgerufen. Ich würde gerne wissen, ob es etwas falsch mit meinem Code ist, dass das geänderte Verhalten und die Antworten verursachen die folgenden:

  1. Für einige Suchbegriffen, die ich gesehen habe, dass die maximalen Ergebnisse, die zurückgegeben werden, sind jetzt genau 1000 (totalEstimatedMatches = 1000), obwohl es mehr gibt, wenn ich die Website von Bing durchsuche. Ist 1000 die maximale Grenze und gibt es eine Drosselung?
  2. Wenn Frische = Monat Anforderungsparameter hinzugefügt wird, gibt es mehr Ergebnisse, die ich erhalten würde, wenn ich es nicht verwendet hätte? Ist das Standardverhalten nicht das Abrufen aller Ergebnisse, wenn keine Frische angegeben ist?
+0

Ich beobachte weniger Webinhalte zu finden. Hat sonst noch jemand dasselbe beobachtet? –

+0

Ich bin kein js dev, aber ich schreibe dies -> (https://github.com/trtuxal/py-cog-serv) in Python, und wenn ich Ihre erste Abfrage replizieren, bekomme ich totalEstimatedMatches von 179000 statt der 737, die Ihr Code produziert. Leider ist das alles, was ich habe. Kann JS super-well nicht lesen, so kann ich das Problem nicht identifizieren. –

Antwort

1
  1. Bing keinen Maximalwert für totalEstimatedMatches haben. Obwohl es wichtig ist, es im Hinterkopf zu behalten, ist es eine Schätzung und wir wissen nicht, welche Schätzung konkret bedeutet. Es könnte möglicherweise 500 < totalEstimatedMatches < 2000 für alles, was wir wissen, bedeuten. Wie sie diese Zahl schätzen, ist in der Dokumentation nicht enthalten.
  2. Ich starrte lange auf Ihre zweite Frage, bevor ich herausgefunden habe, wo die Dissonanz liegt. Versuchen Sie, am Ende aller URLs, die Sie erstellen, &responseFilter=Webpages anzuhängen. Beim Tabellieren Ihrer Antworten sieht es so aus, als würden Sie nur Webergebnisse zählen, aber nicht angeben, dass nur Webergebnisse von Ihrer Abfrage zurückgegeben werden sollen.