Google Custom Search API Автозаполнение? - PullRequest
9 голосов
/ 22 ноября 2011

Мы используем API пользовательского поиска Google (платный API на стороне сервера) для улучшения результатов поиска.

Я хотел бы добавить функцию автозаполнения в поиск - однако, кто-нибудь можетзнаете, есть ли поддержка для этого (либо через API на стороне сервера, либо через какую-то JSONP на стороне клиента?)

Я пытался использовать автозаполнение для пользовательского поиска Google, но, похоже, нужнонарисовать окно поиска и отобразить объявления Google с результатами, которые я не хочу.

Ответы [ 2 ]

13 голосов
/ 29 ноября 2011

Получил это, работает примерно так - надеюсь, это поможет кому-то еще:)

$(function () {
  $('input.search')
    .focus(function () { this.select(); })
    .mouseup(function (e) { e.preventDefault(); })
    .autocomplete({
      position: {
        my: "left top",
        at: "left bottom",
        offset: "0, 5",
        collision: "none"
      },
      source: function (request, response) {
        $.ajax({
          url: "http://clients1.google.com/complete/search?q=" + request.term + "&hl=en&client=partner&source=gcsc&partnerid={GOOGLESEARCHID}&ds=cse&nocache=" + Math.random().toString(),
          dataType: "jsonp",
          success: function (data) {
            response($.map(data[1], function (item) {
              return {
                label: item[0],
                value: item[0]
              };
            }));
          }
        });
      },
      autoFill: true,
      minChars: 0,
      select: function (event, ui) {
        $(this).closest('input').val(ui.item.value);
        $(this).closest('form').trigger('submit');
      }
    });
});
1 голос
/ 27 июня 2013

На момент написания (июнь 2013 г.) существует несколько более простой способ получения автозаполнения при сохранении результатов в виде XML:

  • Использование элемента управления пользовательского поиска Google (https://developers.google.com/custom-search/docs/element).
  • Просто используйте элемент управления панели поиска, который можно стилизовать по своему вкусу.

<gcse:searchbox-only enableAutoComplete="true" resultsUrl="#"></gcse:searchbox-only>

  • «Хитрость» заключается в том, что вы можете указать «resultsUrl», что означает, что вы можете перенаправлять фактические результаты поиска на страницу, сгенерированную через XML API, без необходимости самостоятельно реализовывать окно поиска UX.
...