Каково ожидаемое поведение Bing Search API v5 при глубоком разбиении на страницы?
Я выполняю поиск Bing API для веб-страниц и запрос cameras
,
Первая "страница" результатов (offset=0
, count=50
) возвращает 49 фактических результатов. Это также возвращает totalEstimatedMatches
из 114000000
- 114 миллионов Опрятно, это много результатов.
Вторая "страница" результатов (offset=49
, count=50
) выполняет аналогично...
... пока не дойду до страницы 7 (offset=314
, count=50
). Вдруг totalEstimatedMatches
является 544
,
И фактическое количество результатов, возвращаемых на страницу, быстро исчезает оттуда. Фактически, на более чем 43 страницах результатов я получаю 413 фактических результатов, из которых только 311 имеют уникальные URL.
Похоже, это происходит для любого запроса после небольшого количества страниц.
Это ожидаемое поведение? В документации API нет никаких намеков на то, что исчерпывающая нумерация страниц должна вести к такому поведению... но у вас это есть.
Вот скриншот:
1 ответ
Каждый раз, когда вызывается API, API поиска получает группу возможных совпадений, начиная с набора результатов, а затем отфильтровывает результаты на основе различных параметров (например, спама, дубликатов, настроек безопасного поиска и т. Д.), В конце концов оставляя окончательный результат. задавать. Если конечный результат после фильтрации и оптимизации будет больше, чем параметр count, будет возвращено число результатов, равное count. Если параметр больше, чем счетчик окончательного набора результатов, то возвращается окончательный набор результатов, который будет меньше, чем параметр количества. Если API поиска вызывается снова, передавая параметр смещения для получения следующего набора результатов, тогда процесс фильтрации повторяется для следующего набора результатов, что означает, что он также может быть меньше, чем count.
Не следует ожидать, что для каждого вызова API всегда будет возвращаться полное число параметров параметра. Если требуются дополнительные результаты поиска, кроме возвращенного числа, запрос должен быть вызван снова, передав параметр смещения со значением, равным количеству результатов, возвращенных в предыдущем вызове API. Это также означает, что при выполнении последующих вызовов API параметр смещения никогда не должен быть жестко закодированным значением и всегда должен рассчитываться на основе результатов предыдущих запросов.
totalEstimatedMatches также может привести к путанице вокруг результатов поиска Bing API. Слово "оценочный" важно, потому что число является оценкой, основанной на начальном наборе быстрых результатов, до фильтрации, описанной выше. Кроме того, значение totalEstimatedMatches может изменяться при повторении набора результатов путем выполнения последующих вызовов API с увеличением значений смещения. TotalEstimatedMatches следует использовать только в качестве приблизительного ориентира, указывающего величину возможного набора результатов, и его не следует использовать для определения количества результатов, которые в конечном итоге будут возвращены. Чтобы запросить все возможные результаты, вы должны продолжать делать вызовы API, передавая со смещением значение суммы результатов, возвращенных в предыдущих вызовах, до тех пор, пока эта сумма не превысит totalEstimatedMatches самого последнего вызова API.
Обратите внимание, что вы можете увидеть такое же поведение, перейдя непосредственно на bing.com и воспользовавшись запросом, например https://www.bing.com/search?q=bill+gates&count=50. Обратите внимание, что вы получите около 34 результатов с общим значением EstimatedMatches ~567 000 (действительно по состоянию на июнь 2017 года, будущие поиски могут измениться), и если вы щелкните стрелку "следующая страница", вы увидите, что следующий выполненный запрос начнется со смещения из 34 возвращенных в первом запросе (т. е. https://www.bing.com/search?q=bill+gates&count=50&first=34). Если вы нажмете "Далее" еще несколько раз, вы можете увидеть, что totalEstimatedMatches также меняется со страницы на страницу.
Это кажется ожидаемым поведением. API веб-поиска не является API поискового робота, поэтому он предоставляет только те результаты, которые алгоритмы считают актуальными для человека. Проще говоря, большинство людей не просматривают более нескольких страниц результатов, более того, они ожидают найти соответствующие результаты на первой странице.
Если бы вы могли получать результаты в миллионах, вы могли бы просто скопировать их поисковый индекс, и Bing прекратил бы свою деятельность.
Индексы поиска, похоже, имеют политическую и экономическую силу, насколько мне известно, в мире существует только четыре релевантных индекса поиска: от Google, от Microsoft (Bing), от России и от Китая. Те, кто контролируют поиск, контролируют Spice...;-)