今回紹介するのは、「パスマッピング」「リクエストヘッダー」「重複ホスト」の3つの機能の設定方法です。これらの機能は、クロール時や検索結果の表示時、ちょっとした調整をしたい場合に活躍してくれます。なお、以降の解説ではFess 13.13.1を利用しています。
パスマッピング
パスマッピング機能は、検索結果に表示するリンクを書き換える場合に利用します。例えば、ローカルのファイルシステムをクロールして、検索時には利用者がアクセス可能な共有フォルダのパスに書き換えるといった処理で利用することができます。
ここでは、ファイルシステムのクロール設定で「/tmp/fess-testdata/」をクロールする設定を作成しておき、パスマッピング機能で「http://fess-testdata/」に書き換える設定を作成します。クロールの設定は、事前に作成しておいてください。
管理画面にログインして、左メニューから「クロール」→「パスマッピング」をクリックします。 画面右上の「新規作成」をクリックして、以下を入力します。
各項目の説明は以下の通りです。
項目 | 説明 |
---|---|
正規表現 | 置換したい文字列を正規表現で指定 |
置換 | 一致した正規表現を置き換える文字列を指定 |
処理の種類 | 書き換えるタイミングを選択 |
表示順序 | 管理画面上の表示順序(小さい値が上位) |
ユーザーエージェント | 検索結果表示時に適用するユーザーエージェントの指定(正規表現) |
「処理の種類」で選択可能な値は以下の通りです。
処理の種類 | 説明 |
---|---|
クロール | インデックス登録時にパスを置換する |
表示 | 検索結果表示時にパスを置換する |
クロール/表示 | インデックス登録時、検索結果表示時にパスを置換する |
保存したURL | クロール中に取得したパスを置換する |
「クロール」「クロール/表示」「保存したURL」を選択した場合は、クロール時にインデックスの内容に反映されます。「表示」を選択した場合は、検索結果の表示時にパスを書き換えるため、インデックスの内容には影響がありません。
パスマッピングの設定は、設定後のクロールから反映されます。インデックスの内容が変更される「処理の種類」を選択した場合は、パスマッピングの設定後には再クロールが必要になります。
クロールが完了したら、インデックスのURLが書き換えられているかどうかを確認します。
管理画面左上の検索フォームを使って該当するインデックスを検索し、検索結果右側の「更新」ボタンをクリックして、インデックスの内容を確認します。URLが指定したパスになっていれば、登録は成功です。
リクエストヘッダー
リクエストヘッダー機能は、クロール時にリクエストヘッダーを指定することができる機能です。クロール対象によっては、リクエストヘッダーに認証情報を渡したり、Accept-Languageで言語を指定したりして、取得するコンテンツを調整することができます。
以下では、認証情報を渡す例として、リクエストヘッダー機能を利用して、Basic認証のサイトをクロールする設定を紹介します(Fessでは標準的な認証方法をサポートしているため、Basic認証のサイトをクロールする場合、ファイル認証から簡単に設定できます)。
管理画面にログインして、左メニューから「クロール」→「リクエストヘッダー」をクリックします。画面右上の「新規作成」をクリックして、以下を入力します。
各項目の説明は以下の通りです。
項目 | 説明 |
---|---|
名前 | リクエストヘッダー名を指定 |
値 | リクエストヘッダーの値を指定 |
ウェブ設定 | リクエストヘッダーを付加するウェブクロール設定名を選択 |
今回はAuthorizationヘッダーを付加するので、「名前」には「Authorization」を、「値」には以下のような形式で認証情報を設定します。
Basic abc123def456
認証情報(上記の「abc123def456」にあたる部分)は、認証方式と、ユーザー名/パスワードをエンコードした値です。以下のコマンドで生成した値を利用することができます。
echo -n "ユーザー名:パスワード" | openssl base64
クロールジョブを実行して検索画面で検索してみましょう。今回の例では、Basic認証が必要なサイトを検索できれば、リクエストヘッダーが適切に指定されていたことになります。
重複ホスト
重複ホスト機能は、クロール時に異なるホスト名を同一のものとして扱いたいときに利用します。例えば、「www.example.com」と「example.com」を同じサイトとして扱いたい場合などです。
管理画面にログインして、左メニューから「クロール」→「重複ホスト」をクリックします。 画面右上の「新規作成」をクリックして、以下を入力します。
各項目の説明は、以下の通りです。
項目 | 説明 |
---|---|
正規名 | 正規ホスト名を指定 |
重複名 | 重複しているホスト名を指定 |
これで、重複しているホスト名が正規のホスト名に置き換わります。今回は、「www.example.com」をクロールする設定を作成して、クロールを開始します。クロールジョブの実行が完了したら、検索画面で検索してみましょう。異なるホストを同じものだと見なしてインデックスが作成され、「正規名」で指定したドメイン名で表示されています。
* * *
パスマッピングや重複ホストの機能は、検索結果のURLを調整したい場合によく利用する機能です。また、リクエストヘッダー機能を使えば、クロール対象がリクエストヘッダーの情報を基に何らかの処理をする場合に情報を渡すことができます。これらの機能は、クロールの際、さまざまな調整をしたいときに利用できるので、ぜひ活用してみてください。
著者紹介
菅谷 信介 (Shinsuke Sugaya)
Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。
本連載の内容やFessに関するご質問は公式フォーラムまで。