0,0
рейтинг
13 июля 2010 в 17:06

Разработка → Подсказки в поисковой строке в Opera для Google и других

Как вы уже возможно знаете, Opera в версии 10.60 начала поддерживать поисковые подсказки. Правда, пока сходу они показываются только для Bing и Wikipedia. Однако довольно легко можно подружить Оперу с Гуглом (и некоторыми другими).




Готовое решение:

  • Делаем копию поиска Гугла (лично у меня не получилось заставить подсказывать существующий поиск). Для этого: заходим в Настройки->Поиск, заходим в редактирование Google, копируем содержимое поля Адрес, отменяем; создаём новый поиск, вставляя в поле Адрес скопированный текст.
    Альтернативный вариант: просто идём на google.com и создаём новый поиск (ПКМ по полю ввода, Создать поиск). UPD: второй вариант нежелательный, так как не сохраняет партнёрский идентификатор Opera при поиске.
  • Закрываем Оперу. Ждём пока она пропадёт из процессов (лично у меня закрывается довольно долго).
  • Идём в папку профиля Оперы (если не знаете, где она, предварительно гляньте в конфиге: opera:config#Opera%20Directory).
  • Бекапим search.ini (на всякий случай) и открываем его на редактирование. UPD: используйте только хороший UTF-8 редактор, например Notepad++. Не используйте блокнот windows!
  • Ищем в нём созданный поиск Google (он будет в конце). В конце секции этого поиска добавляем строки:
    Suggest Protocol=JSON
    Suggest URL=http://suggestqueries.google.com/complete/search?json&q={SearchTerm}

  • UPD: Если вы дублировали поиск, обязательно проверьте блок созданного поиска на наличие Encoding=koi8-r
    Если встречается, замените на Encoding=utf-8
  • Сохраняем, запускаем Оперу, пробуем и наслаждаемся.
  • Удаляем старый поиск Google, если он больше не нужен.

Вариантов в подсказке будет только 3, это увеличить нельзя (пока).

UPD: просьба для блага компании Opera сохранять в поисковых ссылках партнёрские идентификаторы (например, для Google это компонент sourceid=opera). Проще говоря, создавая новые поиски, берите URL поиска из существующих (стандартных).

Адреса для подсказок по другим поискам (взято с форума оперы, я тестил только Youtube):

Youtube: http://www.google.ru/complete/search?hl=ru&ds=yt&output=firefox&q={SearchTerm} 
Google Images: http://www.google.ru/complete/search?hl=ru&ds=i&output=firefox&q={SearchTerm} 
Wikipedia (rus): http://ru.wikipedia.org/w/api.php?action=opensearch&search={SearchTerm}&format=json 
Яндекс: http://suggest.yandex.ru/suggest-sl?&part={SearchTerm} 
Яндекс.Словари: http://suggest-slovari.yandex.ru/suggest-sl?&part={SearchTerm} 
Яндекс.Маркет: http://suggest.market.yandex.ru/suggest-market?part={SearchTerm} 
Яндекс.Видео: http://sitesuggest.yandex.ru/suggest-ya.cgi?site=video&part={SearchTerm} 
NIGMA: http://cplt2.nigma.ru/complete/query_help.php?suggest=true&q={SearchTerm} 
Bing: http://api.bing.net/osjson.aspx?Query={SearchTerm}&FORM=OPERAS&Market=ru-ru
Яндекс.Картинки: http://suggest-images.yandex.ru/suggest-img?&part={SearchTerm}


UPD:
добавлены Яндекс.Картинки, спасибо DS2902
сообщают, что работают все подсказки, кроме Bing-ru.

UPD2:
Как оказалось, автор вышеупомянутого источника на форумах Оперы также писал в песочницу. Поскольку им проделана немалая работа по сбору нужных URLов, предлагаю дать ему инвайт.
Сергей Гончаренко @justpusher
карма
27,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

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

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

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

  • +4
    Поисковые фразы зачетные
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      попалось 3 одинаковых, не так интересно. следующие подсказки были веселее, типа «почему я такая дура»
      • 0
        Обратил внимание, что набор из трёх выползающих поисковых подсказок иногда разный даже на один и тот же запрос. Попробовав несколько раз подряд, можно увидеть и другие варианты. Возможно из списка подсказок, выдаваемых поисковиком, сама Опера выбирает рандомно 3 штуки.
    • 0
      Youtube: hтtp://www.google.ru/complete/search?hl=ru&ds=yt&output=firefox&q={SearchTerm}
      Google Images: hтtp://www.google.ru/complete/search?hl=ru&ds=i&output=firefox&q={SearchTerm}

      Почему там есть слово firefox, если
      UPD: просьба для блага компании Opera сохранять в поисковых ссылках партнёрские идентификаторы


      • 0
        Насколько я понимаю, речь шла именно о УРЛах поиска, а не о УРЛах подсказок.
        В любом случае, в этих ссылках нельзя вставить opera: подсказки выдаются правильно, только если указан firefox или chrome (насколько я понял).
  • –1
    Джва года ждал такой функции!
    • 0
      Жаль что работает только в посковой плашке с выпадающем меню (в статической где только гугл — нет), и если много поисков установлено то закрывает пол страницы.
      • +4
        Можете искать через адресную строку (g почему). Он как раз очень компактен.
        Если лень переключать раскладку — можно создать ещё один поиск, с кейвордом «г» или «п».
        • 0
          Через адресную можно искать даже без ввода «g», единственное — нельзя использовать некоторые символы, например, точку.
          • 0
            >Через адресную можно искать даже без ввода «g»
            это итак очевидно. просто в таком режиме автодополнение не работает.
  • 0
    > лично у меня не получилось заставить подсказывать существующий поиск
    для этого нужно дописывать в %opera%\locale\ru\search.ini
    • +1
      Кстати из поиска на экспресс-панели и адресной строки (g почему) тоже работает
    • 0
      действительно, так работает.
      у меня просто уже была запись гугла в search.ini в профиле, и я решил, что используется именно она. а оно как-то хитрее работает.
  • 0
    Спасибо. Всё работает.
  • 0
    Я даже не знал что начала поддерживать) Переносите в тематический блог (:
    • 0
      Я бы с радостью, но кармы не хватит. Я тут новенький.
      • +6
        Уже хватает — перенёс в тематический блог.
  • 0
    В строке адреса работает?
    • +2
      Работает, даже лучше смотрится. Пишут, что и из speed dial работает, но я не пробовал.
      • +1
        Спасибо, значит нужно и себе сделать
  • +3
    >Закрываем Оперу. Ждём пока она пропадёт из процессов (лично у меня закрывается довольно долго).

    Лучшие собаководы рекомендуют ежедневно дефрагментировать папочку оперного профиля vps (содержащую индекс для поиска по содержимому посещённых страниц) и перезапускать „Оперу“ как минимум не реже того.

    Почему они на протяжении нескольких релизов используют этот ужасный формат, скорее всего, являющийся велосипедом собственной сборки, и не переходят, скажем, на какое-то готовое лёгкое хранилище…
    • –1
      Это индексирование можно вообще отключить?
      • 0
        Если бы для этого не было галочки в GUI, я бы ответил на ваш вопрос.
  • 0
    Супер, спасибо, не знал, что такое возможно :)
  • +1
    А ну как хакеры, кто первый найдёт в exe-шнике нужный байт и переправит 3 на 5, хотя бы? ;)
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    ubutnu 9.10
    Opera Version 10.70
    Build 6396
    Platform Linux
    System i686, 2.6.32-24-generic

    Правда ведь я не дурак и у остальных тоже не работает?
    • 0
      в адресной строке работает, а вот в виджетах нет
      • 0
        > в адресной строке работает, а вот в виджетах нет

        У меня в Linux в домашней папке юзера есть два оперных профиля: один в каталоге .opera, а другой в каталоге .opera_widget_manager. Структура и состав второго довольно похож на первый.
        Может просто попробовать скопировать search.ini из одного профиля в другой?
    • 0
      > Правда ведь я не дурак и у остальных тоже не работает?

      А у меня работает:

      Opera Google search suggest

      Ubuntu 10.04, x86-64, Opera 10.60 (build 6386)
      • 0
        а. Я дурак. Не правильно понял как работает)
        • +1
          > а. Я дурак.

          Т.е. скриншот я правильный подобрал? ;)
          • 0
            да. Я привык искать просто ctrl+t %тело запроса% а про обозначение поисковика забыл)
  • 0
    > Бекапим search.ini (на всякий случай) и открываем его на редактирование.

    Следует упомянуть, что при редактировании любых конфиг-файлов Оперы следует использовать вменяемый текстовый редактор, умеющий сохрянять файлы в кодировке UTF-8. А если редактировать конфиги каким-нибудь корявым текстовым редактором типа виндового Notepad, который сохранит результат, например, в кодировке Windows-1251, то потом с таким конфигом возможны проблемы.
    • 0
      Спасибо, подправил.
  • 0
    > Делаем копию поиска Гугла (лично у меня не получилось заставить подсказывать существующий поиск).

    Я не знаю, как организован профиль Оперы в Windows, но в Linux-версии сделано следующим образом:
    1. Сначала применяются дефолтные конфиги из /usr/share/opera/defaults
    2. Потом применяются специфичные для локали конфиги из папки локали:
    /usr/share/opera/locale/en — для английской локали;
    /usr/share/opera/locale/ru — для русской локали;
    /usr/share/opera/locale/uk — для украинской локали;
    /usr/share/opera/locale/be — для белорусской лоокали;
    и т.д.
    3. И в последнюю очередь применяются специфичные для текущего пользователя конфиги из его домашнего каталога:
    /home/username/.opera

    Т.е. одноименные конфиги из этих директорий накладываются друг на друга, а при конфликте параметров, кто последний, тот и побеждает.

    Например, файл search.ini присутствует во всех трёх уровнях этой иерархии конфигов. Поэтому значения из каждого последующего search.ini
    — если они не были определены в ранее примененных search.ini, то они добавляются к ним;
    — а если они уже были определены в ранее примененных search.ini, то они переопределяются.
    Т.е. например, если:
    1) в /usr/share/opera/defaults/search.ini — создан поиск по алиасу «y» на yahoo.com
    2) в /usr/share/opera/locale/ru/search.ini — создан поиск по алиасу «y» на yandex.ru
    3) а в /home/username/.opera/search.ini — поиск по алиасу «y» вообще не задан,
    то в итоге для юзера будет действовать поиск по «y» на yandex.ru
    А если при этом пользователь задаст у себя в пользовательском профиле Оперы поиск по алиасу «y» на youtube.com, то будет действовать именно эта настройка поиска как последняя применяемая.

    Поэтому, если у вас поиск на google.com был настроен в дефолтном конфиге (/usr/share/opera/defaults), а также в локальном конфиге /usr/share/opera/locale/ru, то для его редактирования нужно либо править локальный конфиг (правка дефолта ничего не даст, т.к. его переназначит локальная настройка) либо создать этот поиск в своём пользовательском search.ini, а уже потом там править.
    Идеологически правильным вариантом будет всё же править свой персональный профиль Оперы в домашнем каталоге пользователя, тем более для этого не нужно иметь административных прав. При копировании поиска через интерфейс Оперы именно это и происходит — копирование соответствующего поискового фрагмента из дефолтного/локализованного search.ini в одноименный файл в профиле юзера.
    • 0
      Всё это очень логично, и именно так и должно работать. Тем не менее у меня в профиле был поиск гугла по кейворду «g», и его редактирование не добавило к нему подсказок. А вот редактирование в локалях — помогло. Может, windows, а может я перемудрил с настройками.
  • +2
    Яндекс.Картинки
    suggest-images.yandex.ru/suggest-img?&part={SearchTerm}
    • 0
      Спасибо, добавил в пост.
      Чтобы парсер не ел ссылки, я оборачивал в тег pre.
  • +1
    > я тестил только Youtube

    Все остальное работает, кроме Bing (ru).
  • 0
    И это при том что опенсерч это умеет, а опера `любит стандарты`
  • 0
    Автору спасибо. Добавлю, что для того, чтобы сам гугл-поиск корректно работал (подсказки и так работают), мне у гугла потребовалось заменить строку
    Encoding=koi8-r
    на
    Encoding=utf-8
    • 0
      Как интересно… Это у вас в стандартных поисках было koi8-r? У меня нет koi8 ни в одном search.ini.
      • 0
        При создании нового поиска на основе старого (как рекомендовано в статье) появился koi8-r. Опера 10.60.
        • 0
          И действительно, так получается. Видимо, я на автомате подправил и не обратил внимания.
          Спасибо, добавил в пост.
  • 0
    Ссылки на Яндекс, Яндекс.Словари и Яндекс.Видео неправильные.

    Парсер хабра почему-то заменяет «part» на "∂".
    • 0
      У меня Яндекс работает, код брал из поста.
      • 0
        Если просто вставить в адресную строку и заместо SearchTerm ввести латинскую букву, то выдаёт «400 Bad request». Если странный символ заменить на «part», то всё отлично срабатывает.
    • 0
      У меня тоже работает.
  • +3
    У меня ко всем желающим подправить search.ini есть небольшое, но очень ответственное поручение. ;)

    Пожалуйста, при всех правках сохраняйте в поисковиках партнёрские идентификаторы. Вам всё равно, а нам будет капать копеечка «на развитие фирмы» ;)
    • 0
      Партнёрский идентификатор — это sourceid=opera?
      • 0
        Да. Там почти у каждого поисковика есть ID.
    • 0
      Добавил поправку в пост.
      А вы случайно не знаете, удобное редактирование настройки подсказок планируется сделать?
      • 0
        Если и планируется, то нескоро. Пока более важных задач вагон и маленькая тележка.

        Но я отправил разработчикам эти варианты с предложением их использовать в дальнейшем в русскоязычной версии.
    • 0
      А вы сделайте, чтобы мы ничего ручками в search.ini не лапали, и хоть 10 партнерских впихивайте
      • 0
        Эмм… Зашить search.ini в бинарник opera.exe? ;)
        • 0
          Лучше все же галочку в настройках, «включить автоподстановку»
          ини в бинарник это как-то жестоко
  • 0
    А у меня на слова «почему я хр» выдаётся «330 000 результатов»
  • 0
    автор этой темы, не вы ли постили её в песочницу?
    • 0
      Нет, не я. Очень похоже, что это был автор вот этого поста на форумах, который предложил большую пачку URLов. Как по мне, заслуживает на инвайт.
  • 0
    Моя Opera в версии 10.60 не поддерживает поисковые подсказки. что я делаю не так?
    • 0
      Вообще-то должна поддерживать. Попробуйте удалить search.ini (забекапив, конечно) и попробовать подсказки в Bing. Должны работать.
  • 0
    Огромнейшее спасибо автору!

    А есть ли способ совсем упростить жизнь и сделать появление подсказок без всяких g/ya/и_иже_с_ними в адресной строке?
    Опера же умеет запускать поиск просто по тексту (сама добавляет? перед строкой).
    • 0
      Насколько я знаю, нет.
      В любом случае, тогда бы Опере пришлось запрашивать подсказки, даже когда вы вводите адрес сайта (а у меня это 90% случаев), а это не очень хорошо.
  • 0
    Кто может подсказать как выдрать из аналогичного поиска гугла в Firefox список всех запросов, которые туда вводил? Этот список выпадает, когда начинаешь что-то вводить или просто нажимаешь стрелку вниз, но выделить и скопировать нельзя. Излазил все служебные и не очень папки Firefox — так и не нашел, где они храняться :(
    • 0
      Насколько я понимаю, они хранятся в файле
      Application Data\Mozilla\Firefox\Profiles\blablabla.default\formhistory.sqlite
      ну или что-то аналогичное для линукса.
      Файл можно открыть консольным sqlite и запросом
      select * from moz_formhistory where fieldname='searchbar-history';
      получить поисковые запросы.
      • 0
        о, спасибо! буду пробовать.

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