バング(bang)は、Fess で検索する代わりに、別のサイトへ検索を送る機能です。DuckDuckGo のバングと同じ使い方で、検索語に ! と短いトリガー語を加えると、Fess は残りの検索語をそのトリガー語が表すサイトへ送ります。
| 検索語 | 送り先 |
|---|---|
airplane !g | Google で airplane を検索 |
!w Ohm's law | Wikipedia で Ohm's law を検索 |
!g | Google のトップページ |
airplane !unknown | Fess での通常の検索(! は NOT の意味です。NOT 検索(除外検索) を参照) |
バングは fess-webapp-bangs プラグインが提供します。Fess 15.9 以降が必要です。管理画面の [システム > プラグイン] か bin/fess-setup install plugin fess-webapp-bangs でインストールし(プラグイン を参照)、Fess を再起動します。
バングとして扱われる条件
バングは
!にトリガー語を続けたもので、独立した単語として記述します。トリガー語は大文字・小文字を区別しません。バングは検索語から取り除かれ、残りの検索語がバングの URL に送られます。
定義済みのバングが検索語に複数含まれる場合は、最初の 1 つだけが有効です。
定義されていないトリガー語はバングではありません。
!unknownは通常どおり検索され、単語unknownを除外します。-gやNOT gはこれまでどおり単語gを除外します。バングになるのは!gだけです。
検索画面と /api/v2/search はリダイレクトに対応しています。API は redirect_url を返し(検索API を参照)、Fess に同梱の bootstrap テーマはその URL へ移動します。ほかのテーマでは同様の処理が必要です。
チャット、MCP、v1 API・クラシック JSON API、管理画面の検索など、リダイレクトできない呼び出し元では、別サイトへ検索を送りません。バングを取り除き、残りの検索語で検索します。
バングの定義
バングはシステムプロパティ bangs.definitions で定義します。app/WEB-INF/conf/system.properties に記述するか、-Dfess.system.bangs.definitions=... として渡します。system.properties の変更は、Fess を再起動しなくても反映されます。
値は トリガー語=URL の空白区切りのリストです。URL の中の {query} は、URL エンコードした残りの検索語に置き換えられます。
トリガー語には、空白、
(、)、!、"、=、:を含められません。受け付けるのは、絶対 URL の
httpまたはhttpsだけです。この規則に合わない項目は使われません。Fess のログに警告が出力され、ほかの項目は有効なままです。
同じトリガー語を 2 回定義した場合は、最初の定義が使われます。
値を空にすると、すべてのバングが無効になります。
bangs.definitions を設定していない場合は、次の 5 つのバングが使えます。
| トリガー語 | サイト |
|---|---|
g | |
b | Bing |
ddg | DuckDuckGo |
w | Wikipedia(英語) |
gh | GitHub |
bangs.definitions を設定すると、この一覧は置き換わります。既定のバングを残したまま 1 つ足したい場合は、必要な項目をすべて記述してください。
関連項目
NOT 検索(除外検索) - NOT 検索の書き方
特殊文字 - 特殊文字とエスケープ
検索API - 検索 API