MozSearch は、サーチサジェスト (検索提案, search suggestions) をサポートします。 利用者が検索バーに入力することで、Firefox 2 は検索プラグインに指定されたオンラインサーチサジェストの URL に問い合わせます。
リストを取得すると、検索バーの下側にポップアップボックスを表示し、ユーザは提案された検索後から選択することができます。もし、ユーザが入力を続ければ、新しいサジェストをサーチエンジンに要求し、表示リストを更新します。
Firefox 2 に含まれている Yahoo と Google 検索プラグインはサーチサジェストをサポートしています。
検索プラグインにサーチサジェストを実装する
サーチサジェストをサポートするには、検索プラグインは type
アトリビュートが "application/x-suggestions+json"
である追加の <Url>
エレメントを定義する必要があります。(これは、サジェストをサポートする検索プラグインは、二つの <Url>
エレメントを持つことを意味します。もうひとつは、検索 URL を示す text/html
のエレメントです。)
たとえば、Yahoo 検索プラグインはこのような <Url>
エントリを持ちます。
<Url type="application/x-suggestions+json" template="https://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>
ユーザが "fir" を検索バーに入力し、一時休止すると、Firefox は "fir" を {searchTerms}
へ挿入し URL へアクセスします。
<Url type="application/x-suggestions+json" template="https://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>
応答は、リストボックスの提案を表示するのに利用されます。
検索プラグインに実装する方法についての詳細は、Creating MozSearch plugins を参照してください。
サーバにサーチサジェストサポートを実装する
実際のところ、サーチサジェストの大半の動作は、サーバ側に実装されています。もし、あなたがウェブサイトデザイナで、サーチサジェストをサポートしたいなら、与えられた検索語に対して JavaScript Object Notation (JSON) 形式でサジェスト内容を返すように実装する必要があります。
ブラウザが検索語に合致するリストを要求しようとするとき、HTTP GET リクエストを <Url>
エレメントで指定された URL に送ります。
あなたのサーバは、与えられた文字列に当てはまるサジェストがなにであるかを決定し、最低でも二つ、最大で四つのエレメントを含む JSON 配列を構築する必要があります。
- 検索語
- 配列の最初のエレメントはオリジナルの検索語です。Firefox はこれを利用して現在の検索語と合致しているか確認します。
- 候補リスト
- 提案される検索後の配列です。この配列は、角括弧で囲まれているべきです。たとえば、
["語 1", "語 2", "語 3", "語 4"]
- 説明
- オプションのエレメントで、 候補リスト にある提案された検索語に対する解説の配列です。取得可能な検索件数などといった、検索エンジンがブラウザで表示させたい追加の情報です。
- 検索 URL
- このオプションエレメントは、候補リスト での提案語の代替 URL の配列です。たとえば、もし、検索語に対して、検索結果のページではなく、マップリンクなどを提供したい場合に、この配列に URL を入れて返すことができます。
- もし、検索 URL を指定しないなら、検索プラグインの XML で述べたように
<Url>
エレメントを元にしてクエリを作成します。
This enhancement request - the handling of a selected suggestion, namely calling of a full specified URL as proposed in the opensearch standard - is tracked in バグ 386591.
たとえば、"fir" が検索語で、説明も代替検索 URL も必要ないならば、返す JSON は次のようになります。
["fir", ["firefox", "first choice", "mozilla firefox"]]
このサンプルでは、検索語と候補リストのみが指定されて、オプションエレメントは入っていません。
候補リストは、必要なだけ入れることが出来ますが、表示されるリストはユーザが検索文字列を入力するたびにアップデートされるため、扱いやすい数にとどめておくべきです。さらに言えば、サジェスト内容を決定する方法は、あなたが決定するところです。