Нужна помощь в понимании результатов, возвращаемых API Bing Web Search v5

Я обновил следующий фрагмент, созданный ранее, с помощью бета-версии API веб-поиска Bing, чтобы использовать более новое доменное имя: api.cognitive.microsoft.com/bing/v5.0/search, который теперь использует API веб-поиска Bing -

Пожалуйста, замените свой собственный ключ API Bing, чтобы запустить образец

<!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) {
        total = data.webPages.totalEstimatedMatches; 
  len = data.webPages.value.length
  for (i=0; i<len; i++ )
  {
     results += "<p><a href='" + data.webPages.value[i].url + "'>" + data.webPages.value[i].name + "</a>: " + data.webPages.value[i].snippet + "</p>";
  }
  $('#content').html(results);
 ofst += pgcnt;
 if (total > ofst) { 

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

xhr_get(burl);

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

Я вижу разницу между результатами, которые были возвращены ранее, и результатами, полученными сейчас. Я хотел бы знать, если что-то не так с моим кодом, который вызывает изменение поведения, и ответы на следующие вопросы:

  1. По некоторым поисковым ключевым словам, я видел, что максимальные результаты, которые возвращаются, в настоящее время ровно 1000 (totalEstimatedMatches=1000), хотя их больше, если я ищу на сайте Bing. Является ли 1000 максимальным пределом и есть ли некоторые ограничения?
  2. Когда добавляется параметр запроса freshness=Month, он возвращает больше результатов, которые я получил бы, если бы не использовал его? Не является ли поведение по умолчанию для получения всех результатов, если свежесть не указана?

1 ответ

  1. Bing не имеет максимального значения для totalEstimatedMatches. Хотя важно иметь в виду, что это оценка, и мы не знаем, что конкретно означает оценка. Это потенциально может означать 500 < totalEstimatedMatches < 2000 за все, что мы знаем. Как они "оценивают" это число, нет в документации.
  2. Я долго смотрел на ваш второй вопрос, прежде чем выяснить, где диссонанс. Попробуйте добавить &responseFilter=Webpages до конца всех URL, которые вы делаете. При составлении таблиц ваших ответов создается впечатление, что вы учитываете только веб-результаты, но не указываете, что ваш запрос должен возвращать только веб-результаты.
Другие вопросы по тегам