Интеграция сайта с поисковым движком BING

15 Авг
2011

С начала этого года я серьезно начал переделывать один из сайтов. Поскольку я не использую SQL и не хотел нагружать сервер поисковыми запросами, я решил что стоит поискать внешние модули поиска. На рынке их несколько, Google, Yahoo, BING. Все они предоставляют данные в xml виде, но Google просит денег, Yahoo было лень пробовать. Остановился на BING. Радует то что никаких ограничений фактически не накладывается, доступ бесплатен. Прекрасно! Для тех кто не совсем понимает о чем речь: меня не интересуют поисковые блоки такие как у Google например поскольку они перекидывают на другую страницу и стиль мягко говоря другой :). XML ответ позволяет нам получить результаты поиска в сыром виде. Мы можем их обработать и вывести так как именно нам нужно! Приступим. Для начала вам нужно будет зарегистрировать для себя appID, сделать это можно здесь здесь. Теперь можно приступать!
  1.   function bing_query($appid,$q="",$offset=0,$qp="")
  2.   {
  3.     $result=array();
  4.     
  5.     $xml=new DOMDocument();
  6.     $xml->load("http://api.bing.net/xml.aspx?AppId=".$appid."&Query=".urlencode($qp.$q)."&Sources=Web&Web.Offset=".$offset);
  7.     
  8.     @$result["total"]=(int)($xml->getElementsByTagName('Total')->item(0)->nodeValue);
  9.     
  10.     $webresult=$xml->getElementsByTagName('WebResult');
  11.     
  12.     $result["results"]=array();
  13.     
  14.     for($i=0;$i<$webresult->length;$i++)
  15.     {
  16.       array_push($result["results"],$webresult->item($i));
  17.     }
  18.     
  19.     return $result;
  20.   }
.
Это простая функция, в качестве аргументов мы передаем appID, поисковый запрос, смещение и префикс (ведь мы же ищем по нашему сайту верно?). Дальше вы можете вызвать функцию поиска и вывести результаты:
  1.   $results=bing_query("!!!ваш appID!!!",$query,$pagination,"site:example.com ");
  2.   
  3.   if($results["total"]>0)
  4.   {
  5.     ?><span style="float:right;color:#999">Powered by <a class="a" style="color:#999" href="http://bing.com/">BING</a></span><?php
  6.     for($i=0;$i<count($results["results"]);$i++)
  7.     {
  8.       $row=$results["results"][$i];
  9.       ?>
  10.       <a class="a" href="<?php print $row->getElementsByTagName('Url')->item(0)->nodeValue;?>"><?php print $row->getElementsByTagName('Title')->item(0)->nodeValue;?></a>
  11.       <br>
  12.       <a class="a" href="<?php print $row->getElementsByTagName('Url')->item(0)->nodeValue;?>" style="color:#069;text-decoration:none"><?php print $row->getElementsByTagName('Description')->item(0)->nodeValue;?></a>
  13.       <br>
  14.       <span><?php print $row->getElementsByTagName('DisplayUrl')->item(0)->nodeValue;?></span>
  15.       <?php  
  16.     }
  17.   }
  18.   if($results["total"]==0)
  19.   {
  20.     ?>
  21.     <span style="float:right;color:#999">Powered by <a class="a" style="color:#999" href="http://bing.com/">BING</a></span>
  22.     Простите, но поиск не дал результатов.
  23.     <?php  
  24.   }
.
Что бы там не говорили о Microsoft, такой шаг это огромный плюс. Открытый доступ к BING API. Без ограничений. Надеюсь Microsoft будет продолжать в том же духе, поскольку поиск на сайте стал удобным и легким.Полезная информация:Bing Developer CenterAPI documentationTerms of use (важно)
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх