Как сообщить Google о поисковой системе сайта?

У Google Chrome есть функция, в которой вы можете нажать вкладку для поиска сайта. Затем Chrome переходит к собственной поисковой системе сайта и запускает введенный запрос. Документация Chrome указывает, что это доступно только в том случае, если Google обнаружил поисковую систему на сайте, который вы пытаетесь выполнить.

Это действительно так, потому что запись stackoverflow.com<Tab>test<Enter> заставляет Chrome перемещаться здесь, а facebook.com<Tab>test<Enter> ничего не делает, потому что вкладка tabbes выходит из адресной строки.

Что мне интересно, то как указать Google, что на моем сайте есть поисковая система и как Google нужно отформатировать запрос, чтобы перенаправить пользователя Chrome на мой сайт, когда используется функция поиска вкладок. Это метатег? Это в robots.txt?

Ответ 1

После небольшого рытья я нашел эту страницу, которая описывает это. Также вы можете прочитать в исходном коде Stackoverflow и найти эту строку кода:

<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">

Что он делает, указывает Google, что описание того, как использовать поисковую систему в файле /opensearch.xml который содержит это:

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <ShortName>Stack Overflow</ShortName>
  <Description>Search Stack Overflow: Q&amp;A for professional and enthusiast programmers</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16" type="image/x-icon">http://sstatic.net/stackoverflow/img/favicon.ico</Image>
  <Url type="text/html" method="get" template="http://stackoverflow.com/search?q={searchTerms}"></Url>
</OpenSearchDescription>

Ответ 2

Когда я реализовал функцию поиска для своего онлайн-словаря клингона, я обнаружил, что мне не нужно описание OpenSearch для Chrome, чтобы автоматически определять его как поисковую систему.

ПРИМЕЧАНИЕ. Несмотря на то, что это более простой метод, он не позволяет использовать дополнительные функции, такие как указание шаблона поиска, пользовательский значок (Chrome автоматически использует значок сайта) и т.д. Он также может не работать для других браузеров, кроме Chrome.

Я начал с инструкций по поисковой системе Autodiscovery: Google Chrome Autodiscovery, которые говорят:

Интересно, что автоматическое обнаружение работает, только если поисковая система находится на главной странице. Вы должны иметь либо поле ввода search типа, либо text типа с именем s:

<form>
  <input type="search" name="s" />
</form>

или же

<form>
  <input type="text" name="s" />
</form>

Я получил Chrome для автоматического определения поисковой системы на моем сайте klingonska.org без использования описания OpenSearch.

Однако я отклонился от приведенного выше описания, поскольку обнаружил, что мне не нужно иметь поле с именем s и использовать type="search". Мой окончательный <form> выглядит примерно так (в сокращенном виде).

<form method=get action="dict/">
  <input name=q placeholder="Search dictionary…">
  <button type=submit>Search</button>
</form>

Решающими факторами, по-видимому, было то, что форма была расположена на корневой странице http://<domain>/ page (а не на подстранице типа http://<domain>/<dir>/<something>.html). И, IIRC, эта форма поиска содержит только одно поле.