このウェブサイトの全文検索フォームをDuckDuckGoによるものに変えた。公式にはiframe
要素によるものが推奨されているが、そのページからリンクされている更なるカスタマイズを解説した記事のように、form
要素を直接書いても良いようだ。
サイト内検索を実現するための最小限のコードは以下のようになる。
<form
action="https://duckduckgo.com/"
role="search">
<input
name="sites"
type="hidden"
value="hail2u.net">
<input
name="q"
type="search">
<input
type="submit"
value="Search">
</form>
form
要素のaction
属性でトップページのURLを、name
属性の値をsites
に設定した隠れコントロールで検索したいドメインを、name
属性の値がq
のテキスト入力コントロールが必須になる。methodo
属性はデフォルトでGET
なので必要なく、送信ボタンにも特に名前を付ける必要はない。ドメインはカンマで区切って複数指定することもできる。
これに加えて検索結果のページでの表示を制御するパラメーターを隠れコントロールで指定することができる。柔軟にカスタマイズできてすごい……ように思えるが、色を変えたりという程度なのでそれほどでもなく、Googleカスタム検索エンジンの方がそういう点では優る。手軽にちょっとだけ体裁を変えるということが可能ではあるけれども、HTMLの書き換えを伴うのであまり意味はない。
肝心の検索結果はというと、サイト内検索なら問題は感じられない。確かにDuckDuckGoはGoogleと比べるとかなり検索結果のクオリティーは落ちる。普通に謎の業者が勝手に作った丸パクリのウェブサイトがかなり上位に出てきたりもするし、日本語のウェブサイトを検索しているのに延々と中国語のスパム・ウェブサイトが出てきたりもする。しかしサイト内検索で使う場合はそういったゴミが混ざることもなく、順位付けの精度も悪くはない。