Каково ожидаемое поведение Bing Search API v5 при глубоком разбиении на страницы?

Я выполняю поиск веб-страниц через API Bing и запрос 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 нет намека на то, что исчерпывающее разбиение на страницы должно привести к такому поведению... но вот оно.

Вот скриншот:

странное поведение


person Dave Peck    schedule 13.10.2017    source источник


Ответы (2)


Каждый раз, когда вызывается API, API поиска получает группу возможных совпадений, начиная с в наборе результатов, а затем отфильтровывает результаты на основе различных параметров (например, спам, дубликаты, настройки безопасного поиска и т. д.), в итоге оставляя окончательный результат. набор. Если конечный результат после фильтрации и оптимизации превышает параметр count, то будет возвращено количество результатов, равное count. Если параметр больше, чем окончательный набор результатов count, то возвращается окончательный набор результатов, который будет меньше, чем параметр count. Если поисковый API вызывается снова, передавая параметр offset для получения следующего набора результатов, то процесс фильтрации повторяется снова для следующего набора результатов, что означает, что он также может быть меньше, чем count.

Не следует ожидать, что для каждого вызова API всегда будет возвращаться полное число результатов параметра count. Если требуются дополнительные результаты поиска помимо возвращенного числа, запрос следует вызвать снова, передав параметр offset со значением, равным количеству результатов, возвращенных в предыдущем вызове API. Это также означает, что при последующих вызовах API параметр offset никогда не должен быть жестко запрограммированным значением и всегда должен рассчитываться на основе результатов предыдущих запросов.

totalEstimatedMatches также может внести путаницу в отношении результатов API поиска Bing. Слово «оценка» важно, потому что это число является оценкой, основанной на первоначальном наборе быстрых результатов до описанной выше фильтрации. Кроме того, значение totalEstimatedMatches может меняться по мере повторения набора результатов путем выполнения последующих вызовов API с увеличением значения смещения. totalEstimatedMatches следует использовать только в качестве приблизительного ориентира, указывающего величину возможного набора результатов, и его не следует использовать для определения количества результатов, которые в конечном итоге будут возвращены. Чтобы запросить все возможные результаты, вы должны продолжать выполнять вызовы API, передавая offset со значением суммы результатов, возвращенных в предыдущих вызовах, до тех пор, пока эта сумма не превысит totalEstimatedMatches самого последнего вызова API.

Обратите внимание, что вы можете увидеть такое же поведение, перейдя напрямую на сайт bing.com и используя такой запрос, как https://www.bing.com/search?q=bill+gates&count=50. Обратите внимание, что вы получите около 34 результатов с totalEstimatedMatches ~567 000 (действительно на июнь 2017 года, будущие поисковые запросы могут измениться). Если вы нажмете стрелку "следующая страница", вы увидите, выполненный запрос начнется со смещения 34, возвращенного в первом запросе (т.е. https://www.bing.com/search?q=bill+gates&count=50&first=34). Если вы нажмете «Далее» еще несколько раз, вы увидите, что totalEstimatedMatches также меняется от страницы к странице.

person Matt Small    schedule 13.10.2017
comment
Спасибо за быстрый ответ, Мэтт. Вы описываете поведение, которое я вижу. Но, пожалуйста, внимательно посмотрите на мое описание: я я каждый раз добавляю число перенастроенных результатов к offset. (См. на снимке экрана фактические значения offset, которые я использую с каждым запросом.) В определенный момент возвращаемые результаты резко падают. Первоначальная оценка в 114 миллионов кажется недостижимой на практике - даже на несколько порядков меньше, чем кажется на практике недостижимой. Соответствует ли это фактическому ожидаемому поведению API или API не работает? - person Dave Peck; 13.10.2017
comment
Да, это ожидаемое поведение. - person Matt Small; 13.10.2017
comment
Спасибо @MattSmall - просто для дополнительного уточнения: можно ли использовать API для исчерпывающего получения 114 миллионов результатов для одного запроса? (Или что-то похожее на эту шкалу результатов для одного запроса?) - person Dave Peck; 13.10.2017
comment
Вот важная информация, приведенная выше: totalEstimatedMatches также может внести путаницу в отношении результатов API поиска Bing. Слово «оценка» важно, потому что это число является оценкой, основанной на первоначальном наборе быстрых результатов до описанной выше фильтрации. Теоретически возможно, если после фильтрации будет столько фактических результатов. На практике я не знаю, так это или нет. - person Matt Small; 13.10.2017
comment
Спасибо, Мэтт, но я чувствую, что... обхожу стороной мой реальный вопрос о масштабе. Я ищу термин камеры. Мы оба знаем, что в Интернете существует более 311 уникальных веб-страниц, посвященных камерам. Оценка в 114 миллионов звучит... правдоподобно. Даже если на практике их всего 1 миллион... кажется, что Bing API будет когда-либо возвращать мне только 300 уникальных результатов (или около того - здесь плюс-минус порядок величины)? - person Dave Peck; 13.10.2017
comment
Какова ваша цель в понимании этого? Это может помочь мне получить лучший ответ. - person Matt Small; 13.10.2017
comment
Моя цель — понять ожидаемое и фактическое поведение API. Я хотел бы знать, можно ли исчерпывающим образом получить результаты в масштабе миллионов для одного запроса. Это? - person Dave Peck; 13.10.2017
comment
Я не знаю. Я могу рассказать вам, как получить все доступные результаты. Я не знаком с алгоритмом, вычисляющим общее количество совпадений. - person Matt Small; 13.10.2017
comment
Ладно, пожалуй, спрошу по-другому. Когда вы используете Bing Search API для получения всех результатов, доступных для поискового запроса cameras, сколько уникальных URL-адресов вы в конечном итоге извлекаете? (Я понимаю, что это число может варьироваться от попытки к попытке, но мне просто любопытно, какое обычное число вы получаете.) - person Dave Peck; 13.10.2017

Кажется, это ожидаемое поведение. API веб-поиска не является API поискового робота, поэтому он выдает только те результаты, которые алгоритмы считают релевантными для человека. Проще говоря, большинство людей не просматривают более нескольких страниц результатов, более того, они ожидают найти релевантные результаты на первой странице.

Если бы вы могли получить миллионы результатов, вы могли бы просто скопировать их поисковый индекс, и Bing перестал бы работать.

Поисковые индексы, похоже, имеют политическую и экономическую силу, насколько мне известно, во всем мире существует только четыре релевантных поисковых индекса: от Google, от Microsoft (Bing), от России и от Китая. Те, кто контролирует поиск, контролируют Spice... ;-)

person tkr    schedule 10.03.2020