← к списку статей

11.09.10 (последнее изменение 13 ноября 2010)

Осваиваем Google AJAX Search API

Как установить на свой сайт ajax-поиск от google.

(Данная статья больше относится к скриптованию, нежели к верстке. В будущем придется переместить в отдельный раздел или же переименовать сам раздел, а статьям назначить теги.)

Требования в моем случае были следующими.

  • Поиск на страницах одного сайта, но без рекламы от google в результатах.
  • Верстка без затей, максимальный минимализм.
  • Постраничная разбивка, 10 результатов на странице.
  • Любой поисковый запрос имеет отдельную страницу.
  • Использовать jQuery.

Порядок действий следующий.

  1. На странице http://code.google.com/apis/ajaxsearch/signup.html получаем ключ для сайта.
  2. В блоке <head> подгружаем библиотеку jquery и объявляем только что полученный ключ, его нужно вписать вместо ABCDEFG.

  1. Создаем файл search.js следующего содержания. Вместо test.ru пишем название своего сайта.

  1. Открываем код страницы поиска и добавляем следующий код. Вместо /path_to/ указываем путь к папке с файлом search.js. Вместо фазана указываем строку, которую ищет пользователь, вместо единицы — страницу, которую запрашивает пользователь. Строка и страница это параметры q и p GET-запроса.

Теперь можно провести предварительное тестирование. У меня получилось вот так: http://layout.bumagi.net/layout/article8/

  1. Добавляем несколько строк стилей, и на этом все.

 

Важная заключительная часть

На TELе была проблема — никак не показывались результаты поиска по новостям с 2006 по 2009 год. Да и за 2010 год новости находились только за последние три-четыре месяца. В то же время аналогичный поиск на google.com работал безотказно, выдавая полторы сотни результатов.

Начал разбираться.

  1. Попытался подключить другой тип поиска — google.search.NewsSearch. Это не помогло.
  2. Долго искал какие-нибудь настройки в API. Ничего не нашлось.
  3. Решил попробовать поставить CSE, на страницу которого случайно попал, разбираясь с API. (CSE — это custom search engine, готовая форма поиска, которую можно немного стилизовать.) Оказалось, что этот CSE отлично находит все новости! Но есть у него один недостаток: бесплатная версия включает довольно много рекламы от google.

    Мне пришла светлая мысль — воспользоваться идентификатором моего CSE. Этот идентификатор — как указано в API — можно передавать вместо имени сайтав метод .setSiteRestriction(). И действительно, когда это сделал, поиск заработал как нужно.

Только так и не понял, почему без cseID поиск не захотел работать на 100%. Вы не знаете?

← к списку статей