Нужна помощь в понимании результатов, возвращаемых 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>
Я вижу разницу между результатами, которые были возвращены ранее, и результатами, полученными сейчас. Я хотел бы знать, если что-то не так с моим кодом, который вызывает изменение поведения, и ответы на следующие вопросы:
- По некоторым поисковым ключевым словам, я видел, что максимальные результаты, которые возвращаются, в настоящее время ровно 1000 (totalEstimatedMatches=1000), хотя их больше, если я ищу на сайте Bing. Является ли 1000 максимальным пределом и есть ли некоторые ограничения?
- Когда добавляется параметр запроса freshness=Month, он возвращает больше результатов, которые я получил бы, если бы не использовал его? Не является ли поведение по умолчанию для получения всех результатов, если свежесть не указана?
1 ответ
- Bing не имеет максимального значения для totalEstimatedMatches. Хотя важно иметь в виду, что это оценка, и мы не знаем, что конкретно означает оценка. Это потенциально может означать
500 < totalEstimatedMatches < 2000
за все, что мы знаем. Как они "оценивают" это число, нет в документации. - Я долго смотрел на ваш второй вопрос, прежде чем выяснить, где диссонанс. Попробуйте добавить
&responseFilter=Webpages
до конца всех URL, которые вы делаете. При составлении таблиц ваших ответов создается впечатление, что вы учитываете только веб-результаты, но не указываете, что ваш запрос должен возвращать только веб-результаты.