OpenSearch Description DocumentによるChrome検索エンジンの自動登録

昨日のChrome Omniboxでの検索で解説したOpenSearchに準拠したサイトが自動的に検索エンジンとして登録される仕組みであるが、Chromium.orgのTab to Searchに実際のサイト側に必要となる作業について書かれている。

まず、サイトはOpenSearch Description Document (OSDD) を用意する必要がある。HTMLの<head>要素中に以下のように記述する。

<head>
  <link type="application/opensearchdescription+xml" rel="search"
  href="url_of_osdd_file"/>
</head>

"url_of_osdd_file"に実際のOSDDが置かれているURLが入る。

OSDDとしては以下が最低限必要な内容である。

<?xml version="1.0"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
 <ShortName>Search My Site</ShortName>
 <Description>Search My Site</Description>
 <Url type="text/html" method="get" template="http://my_site/{searchTerms}"/>
</OpenSearchDescription>

{searchTerms}にユーザーがOmniboxで入力した検索キーワードが含まれることになる。

また、次のようにrel="suggestion"を持つURL要素を含めることで検索サジェスト*1を提供することが出来る。

<Url type="application/json" rel="suggestions" template="http://my_site/suggest?q={searchTerms}" />

なお、OSDDへのリンクを持たないサイトであっても、ユーザーが検索ボックス(フォーム)で検索キーワードを投入した場合もChromeは自動的に検索エンジンとして登録する。ただし、この場合はいくつかの制限がある。GETメソッドである必要があり、HTTPのURLで結果を返す必要もある。また、フォームはOnSubmitスクリプトを持ってはならず、input要素は1つしかサポートされていない。

*1:Googleサジェストのようなサジェスト