← к списку статей
11.09.10
(последнее изменение 13 ноября
2010)
Осваиваем Google AJAX Search API
Как установить на свой сайт ajax-поиск от google.
(Данная статья больше относится к скриптованию, нежели к верстке. В будущем придется переместить в отдельный раздел или же переименовать сам раздел, а статьям назначить теги.)
Требования в моем случае были следующими.
-
Поиск на страницах одного сайта, но без рекламы от google в результатах.
-
Верстка без затей, максимальный минимализм.
-
Постраничная разбивка, 10 результатов на странице.
-
Любой поисковый запрос имеет отдельную страницу.
-
Использовать jQuery.
Порядок действий следующий.
-
На странице http://code.google.com/apis/ajaxsearch/signup.html получаем ключ для сайта.
-
В блоке <head> подгружаем библиотеку jquery и объявляем только что полученный ключ, его нужно вписать вместо ABCDEFG.
-
Создаем файл search.js следующего содержания. Вместо test.ru пишем название своего сайта.
-
Открываем код страницы поиска и добавляем следующий код. Вместо /path_to/ указываем путь к папке с файлом search.js. Вместо фазана указываем строку, которую ищет пользователь, вместо единицы — страницу, которую запрашивает пользователь. Строка и страница это параметры q и p GET-запроса.
Теперь можно провести предварительное тестирование. У меня получилось вот так: http://layout.bumagi.net/layout/article8/
-
Добавляем несколько строк стилей, и на этом все.
Важная заключительная часть
На TELе была проблема — никак не показывались результаты поиска по новостям с 2006 по 2009 год. Да и за 2010 год новости находились только за последние три-четыре месяца. В то же время аналогичный поиск на google.com работал безотказно, выдавая полторы сотни результатов.
Начал разбираться.
-
Попытался подключить другой тип поиска — google.search.NewsSearch. Это не помогло.
-
Долго искал какие-нибудь настройки в API. Ничего не нашлось.
-
Решил попробовать поставить CSE, на страницу которого случайно попал, разбираясь с API. (CSE — это custom search engine, готовая форма поиска, которую можно немного стилизовать.) Оказалось, что этот CSE отлично находит все новости! Но есть у него один недостаток: бесплатная версия включает довольно много рекламы от google.
Мне пришла светлая мысль — воспользоваться идентификатором моего CSE. Этот идентификатор — как указано в API — можно передавать вместо имени сайтав метод .setSiteRestriction(). И действительно, когда это сделал, поиск заработал как нужно.
Только так и не понял, почему без cseID поиск не захотел работать на 100%. Вы не знаете?
← к списку статей