Пользователь
0,0
рейтинг
14 августа 2008 в 10:25

Разработка → Яндекс поиск на вашем сайте.

PHP*
Приведу пример класса, который можно использовать в качестве поисковика на вашем сайте.
Для работы класс использует сервис Яндекс.XML. В свободном режиме они разрешают использовать до 1000 запросов в день. Условия использования сервиса на xml.yandex.ru

Яндекс.XML — это сервис, позволяющий делать автоматические поисковые запросы к Яндексу и публиковать его ответы у себя на сайте в собственном дизайне. Поиск от Яндекса — это быстрый доступ к сотням миллионов документов и изображений.

С помощью Яндекс.XML вы можете предлагать своим пользователям:
  • поиск по вашему сайту (в той мере, в какой этот сайт проиндексирован Яндексом);
  • поиск по сети или ее части (регион, отрасль), результаты которого могут показываться на вашем сайте и в вашем дизайне, и сервисы на его основе — Яндекс.XML открывает большие возможности для исследователей поисковых систем и преподавателей;
  • поиск изображений, опубликованных в сети.



Данный скрипт реализует работу только полнотекстового поиска.

Пример работы скрипта, можно посмотреть здесь: kolesa.kz/search/?stext=Toyota

Изначально класс писался для сайта, чьи исходники в формате ANSI (windows 1251). Поэтому в коде могут повстречаться интересные ICONV. Причина появления таких перекодировок следующая: ответ приходит в UTF-8 а сам код в cp-1251. И чтобы в результате смешения кодировок не получился СЮРПРИЗ, приходится изгаляться.

Для работы вы можете все подчистить, и сделать так как вам нравиться. Это всего лишь пример.

Класс не использует никаких шаблонов, для целостности примера. Чтоб вы могли его запустить сразу.
Единственно необходимо удостовериться в том, что:
  • у вас PHP5
  • хостер вам разрешает работать с сокетами
  • подключено расширение для php под название DOM
  • вы зарегистрировались на Яндексе и вбили IP адрес вашего сервера
  • define(«SEARCH_ADT_QUERY»,«<< url=\»kolesa.kz/content/*\«»); — указывает на ваш сайт


Класс находится по адресу: docs.google.com/Doc?id=dcn4jhdv_4gt4qgzfq

UPD0 Вариант скрипта от Яндекса: xml.yandex.ru/games/site-search-php.html (спасибо Normull, когда писали класс, этого еще не было)

UPD1 На который у меня не хватило сил, но отлично дополнил Groove:
Для партнеров яндекса, установивших поисковой директ на свои сайте это ограничение снимается.
Т.е., если вы дадите пользовать результатами поиска всем его посетителям, при условии, что там стоит Директ на сайте — вас никто не забанит.
А вот если вы просто собираете выдачу например для seo-анализа, бан неминуем.
Только про это имелось в виду.

Павел @nod
карма
23,1
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (26)

  • 0
    Спасибо. Попробуем…
  • +2
    Спасибо за подробные комментарии в коде, это облегчает понимание происходящего.
  • +1
    Дух захватывает от количества кода! Хотя, в принципе, ничего космического :)
    • 0
      С CURL можно было бы его сократить. Но чет, мне с сокетами милее напрямую работать.
  • +4
    Пора бы уже обуздать дикий Jevix, невероятно поганит код.

    Небольшое замечание: все-таки эти многоярусные конкатенации строк смотрятся ужасно, используйте heredoc, с ним HTML-код в скрипте будет удобнее писать и читать.

    Спасибо.
  • +1
    Чисто стиличтический момент, а почему использованы define вместо const?

    Да, код Jevix испоганил на 5 8)
  • 0
    как раз то, что надо, спасибо
  • +1
    Если я не ошибаюсь, то данный класс по сути PHP5 не используют… разве что «private»… а так в целом не плохо.
    Хотя не совсем понял зачем в классе html код, ему там не место… на мой взгляд.

    Вобщем для масштабирование половину кода убрать =) оставить только функциональность. :)

    и опять же в целом молодец.
  • –1
    Оч интересно, но как то гугьль пока ближе и меньше мороки :)
    ну и 1000 запросов как то маловато :(
    Сайт у которого меньше 1000 запросов спокойно может юзать свою систему поиска и мало кому интересно что то искать с этого сайта в сети :(
    а за пример Спасибо.
    • –5
      Одназначно гугль лучше. Что за ограничние вообще? Русский интернет-гигант, а сервис, получается, для говносайтов чтоли?
    • +1
      Для партнеров яндекса, установивших поисковой директ на свои сайте это ограничение снимается.
      Т.е., если вы дадите пользовать результатами поиска всем его посетителям, при условии, что там стоит Директ на сайте — вас никто не забанит.
      А вот если вы просто собираете выдачу например для seo-анализа, бан неминуем.
      Только про это имелось в виду.
    • –3
      у google есть подобный сервис?
  • +1
    ПривЕду пример класса…
    • 0
      спасибо
  • 0
    Мне кажется, что достаточно было выложить ссылку на эту библиотеку. Кто будет вчитываться в столь длинный листинг?
    • 0
      Да, а на Хабре уже выложить примеры использования и описание по настройке использованию
  • +2
    CURL + SimpleXML и всй станет куда проще…

    P.S. Аааа — чудное превращение кавычек…
    • +3
      В XML запросе encoding=«windows-1251» — заменить на UTF-8 — и тогде не надо будет выполнять преобразование iconv('windows-1251','utf-8', 'bla-bla-bla')…
    • +1
      Преобразование из объекта в массив тоже считаю лишним…

      P.S. Не сочтите за занудство…
  • +4
    Попробуйте положить код не в <blockquote>, а в <code>.
  • –2
    Попробуйте положить код не в <blockquote>, а в <code>.
  • +1
    на основе yandex.xml делал облако на сайте исходя из количества запросов в сутки по конкретным словам
  • +1
    Не пробовал, но, кажется, с XSLT будет проще и красивее.
  • +1
    Здесь все уже есть :)
  • 0
    Кстати, по моим пробам, SimpleXML быстрее DOM (и вообще ни к чему преобразовывать весь ответ в массив). В этой части у Нормуля скрипт правильнее :)
  • 0
    А можно просто через iframe сделать.
    Пример

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.