DuckDuckGoでサイト内検索

このウェブサイトの全文検索フォームを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と比べるとかなり検索結果のクオリティーは落ちる。普通に謎の業者が勝手に作った丸パクリのウェブサイトがかなり上位に出てきたりもするし、日本語のウェブサイトを検索しているのに延々と中国語のスパム・ウェブサイトが出てきたりもする。しかしサイト内検索で使う場合はそういったゴミが混ざることもなく、順位付けの精度も悪くはない。