Pull to refresh

Bing API + PHP

Reading time2 min
Views3.4K
Поиск от Bing API – это просто и быстро! Сегодня я хотел бы поделиться с вами некоторыми нюансами разработки веб-поиска.

Шаг 1:
Регистрируемся и получаем ключ API на странице www.bing.com/developers/appids.aspx

Шаг 2:
Определяемся с основными параметрами поиска, а именно:
  • Поисковый запрос (URL-кодирование поискового запроса в соответствии с RFC 1738, в кодировке текста UTF-8)
  • Тип источника (web, images, video, etc…)
  • Количество результатов за один запрос (максимум 50)
  • Смещение на нужную позицию результатов поиска от начала (не более 1000)
  • Формат данных, ожидаемых от поискового сервера (xml, json, soap)

Дополнительные параметры зависят от типа источника поиска. Подробнее об этом в документации

Шаг 3:
Формируем строку запроса и обрабатываем полученные данные. Например:
$url = 'http://api.bing.net/xml.aspx?Appid=' .$Appid. '&query=' .rawurlencode(iconv("CP1251", "UTF-8", searchtext)). '&sources=web&web.count=10&web.offset=0&web.filetype=html';

$searchpage = file_get_contents($url);


Полученные результаты в данном случае будут отданы сервером в виде XML, содержащим префиксы в пространстве имен:
$sxe = new SimpleXMLElement($data);
$resultsearch = $sxe->children('web', TRUE);


Если поисковый запрос был удачно выполнен, результаты будут содержаться в массиве $resultsearch->Web->Results->WebResult, в противном случае сообщение об ошибке будет содержаться в массиве $sxe->Errors->Error

Чего нет в документации, но о чем важно знать:
Поиск Bing API может искать только по определенному сайту. Например, для поиска только на сайте habrahabr.ru, приведенный выше поисковый запрос надо немного модифицировать:
$url = 'http://api.bing.net/xml.aspx?Appid=' .$Appid. '&query=' .rawurlencode(iconv("CP1251", "UTF-8", searchtext)). '+site:habrahabr.ru&sources=web&web.count=10&web.offset=0&web.filetype=html';

Также хотелось бы сказать, что поиск не всегда корректно обрабатывает кириллические запросы. Например, если включить в поисковый запрос фильтрацию непристойного содержания, как оказывается, что поисковик практически не фильтрует контент, если запрос на русском языке:
  $url = 'http://api.bing.net/xml.aspx?Appid='.$Appid.'&query='.rawurlencode(iconv("CP1251","UTF-8",'секс')).'&sources=web&web.count=50&web.offset=0&Adult=Strict';

* This source code was highlighted with Source Code Highlighter.

Вывод:
Конечно, поиск на кириллице от Bing пока не позволяет полноценно насладиться всеми фишками и вкусностями, описанными в документации. Но хотелось бы сказать, что только применение на практике позволит вам сравнить качество морфологического поиска и скорость индексации контента сайта. Лично мне пришлось обратить внимание на Bing, модернизируя поиск на одном из сайтов с технической документацией
P.S.: Простейший пример Bing API+PHP для поиска по сайту: docs.google.com/View?id=dmwh7bn_10fhhxgtfs
Tags:
Hubs:
Total votes 29: ↑21 and ↓8+13
Comments13

Articles