Fess 10.0 導入メモ

2016年3月27日日曜日

Fess

t f B! P L

オープンソース全文検索サーバーFessの設定メモ。公式はこちら。
http://fess.codelibs.org/ja/
一応ドキュメントあるのですが、古いバージョンの記載のままで間違っていたりするので辛い。 導入してみましたので記録をば。

Fessのバージョンは10.0.2、Windows Server 2012 R2で動かしました。Javaのバージョンは8u77。
想定したのは、部内ファイルサーバーの全文検索システムを構築するという状況。 ファイルシステムクロールです。Webクロールは他のサイトでも紹介しているところが結構あると思うのでそちらを参照してください。 部内ファイルサーバーは以下の4つの共有フォルダがあるとします。

全員用
部員全員が閲覧可能な場所。
偉い人用
偉い人だけが閲覧可能な場所。
1課
1課のメンバーと偉い人だけが閲覧可能な場所。
2課
2課のメンバーと偉い人だけが閲覧可能な場所。
本当はActiveDirectoryと連携したかったのだけれども、現状の公式のドキュメントではその方法がわからなかったので、Fessに登録したアカウントとロールで権限を制御します。

まずインストール。Java8のJDKをインストールします。JREではないので注意。現時点での最新、8u77 をインストールしました。
その後、システムの環境変数の設定をします。環境変数の設定画面は、「コントロールパネル」→「システム」→「システムの詳細設定」→「環境変数」ボタンで出てきます。 「システム環境変数」→「新規」で「変数名」に「JAVA_HOME」、「変数値」に「C:\Program Files\Java\jdk1.8.0_77」を設定。Javaのバージョンが違う場合は勿論その部分は合わせてください。 次に、既に登録されている「Path」という環境変数をダブルクリックして、「変数値」の末尾に「;%JAVA_HOME%\bin」を追加します。
FESSを公式からダウンロードします。zip形式のもの。それを展開して、適当な場所に配置します。とりあえず起動してみるだけであればどこでもいいですが、運用するつもりであれば専用のパーティションを切ってその中に置いたたほうがいいと思います。
インストールはこれで完了。

単発で起動するなら、FESSのzipを展開してできたフォルダ内の「bin」フォルダ内の「fess.bat」をダブルクリックすればOKです。コマンドプロンプトが自動的に起動します。このコマンドプロンプトを閉じるとFESSも終了します。正常に起動していれば、ブラウザで http://IPアドレス:8080/ にアクセスするとFESSの画面が表示されます。ちなみに他のマシンからアクセスする場合、Windowsファイアウォールがデフォルト設定だとブロックしてしまうので除外設定する必要があります。
サービスとして登録したい場合は、コマンドプロンプトを起動して、同じ「bin」フォルダ内の「service.bat」を「install」引数付きで実行すると、表示名「Fess 10.0.0-SNAPSHOT (fess-service-x64)」で登録されます。登録したては手動起動になっているので、自動起動したい場合はプロパティで変更してください。

無事起動したら設定をしていきます。管理画面のURLは http://IPアドレス:8080/admin です。管理者アカウントは admin、初期パスワードも admin です。ちなみに IE だとダッシュボードの表示が崩れます。他の画面は大丈夫そうでした。
最初にロールを作成します。左のメニューから「ユーザー」→「ロール」でロールを作成します。ロール名は英字で。 今回は、1ka, 2ka, erai, zenin という4つのロールを作成しました。ロールを作成したら、一覧に表示されたそれぞれのロール名をクリックして、「新しいクローラ用ロールの作成」で、それぞれ同名のクローラ用ロールも作成しておきます。
次に左メニューの「ユーザー」→「ユーザー」でユーザーを作成します。今回は、1kauser, 2kauser, erai の3ユーザーを作成しました(各権限ごとの共有アカウントとして利用する想定)。1kauser には 1ka と zenin のロールを割当て、2kauser には 2ka と zenin のロールを割り当て、erai には erai と zenin のロールを割り当てます。ロールの複数割り当ては、コントロールキーを押しながらクリックすることで可能です。
次にラベルを作成します。これは必須ではないですが、偉い人は何もかも見えてしまうので、範囲を絞りたいこともあるかなと思って作成しています。左メニューの「クローラ」→「ラベル」をクリックし、「新規作成」ボタンをクリックします。「名前」はユーザーに見えるラベルになるので、わかりやすい名前にしましょう。日本語OKです。「値」はユーザーには見えない内部的なものです。英字にしてください。「対象とするパス」「除外するパス」は空欄でOK。「ロール」はそのラベルを表示させる対象のロールを選択します(コントロールキー押下で複数選択可)。「表示順序」はラベルの表示順序です。今回はデフォルトのままとしました。

名前ロール
1課1ka1ka, erai
2課2ka2ka, erai
偉いeraierai
全員zeninzenin
次にクロールの設定です。左メニューの「クローラ」→「ファイルシステム」をクリック、「新規作成」ボタンをクリックします。 「名前」は日本語OK、わかりやすいものに。「パス」にクロール対象とする共有フォルダのパスを以下の形式で記載します。
smb://サーバー/パス/
パスの部分、日本語であってもURLエンコードせずにそのまま記載してOKです。最後の / が非常に重要です。 これがないとクロールしてくれません。 「ロール」で検索させたいロールを選択(コントロールキー押下で複数選択可)し、「ラベル」で付けたいラベルを選択(コントロールキー押下で複数選択可)します。 他のオプションはデフォルトのままとしました。
名前パスロールラベル
1課smb://xxx.xxx.xxx.xxx/1課/1ka, erai1課
2課smb://xxx.xxx.xxx.xxx/2課/2ka, erai2課
偉い人用smb://xxx.xxx.xxx.xxx/偉い人用/erai偉い
全員用smb://xxx.xxx.xxx.xxx/全員用/zenin全員
次に認証の設定です。左メニューの「クローラ」→「ファイル認証」をクリック、「新規作成」ボタンをクリックします。 「ホスト名」を、クローラのパスに設定した smb:// の後ろに記載した通り(上記の例だと xxx.xxx.xxx.xxx)に記載します。 「ポート」「スキーム」「パラメータ」はデフォルトのままでOKです。 「ユーザー名」はドメイン環境であれば「ドメイン名\アカウント名」と記載します。 「ファイルクロール設定」でクロール設定を選びます。ここは1つしか選べないので、認証情報が共通であってもクロール設定数分作成する必要があります。面倒ですが頑張って作りましょう。
これでやっと準備が整いました。左メニューから「システム」→「スケジューラ」をクリックし、表示された一覧の中から 「Default Crawler」をクリック、「今すぐ開始」ボタンをクリックするとクロールが始まります。 負荷がかかりますので、「今すぐ開始」できない場合はジョブ実行されるのを待ちましょう。 デフォルトでは毎日0時に実行されるようになっています。変更したい場合は「編集」で「スケジュール」欄をいじる。
結果は左メニューの「システム情報」→「ジョブログ」で確認できます。 ただ、この画面では、設定ミスによるエラーについてはジョブのエラーとは見なされないので結果OKになっています。 「システム情報」→「クロール情報」でより詳細な情報を確認可能です。 「セッションID」をクリックすると、そのクロールセッションで収集対象となった文書の情報が見れます。 ここで「一致する情報は見つかりませんでした。」と出る場合は、クロールパスの設定か認証の設定かを間違っている可能性大です。 左メニューの「システム情報」→「ログファイル」で「fess-crawler.log」を見てみると何かエラーが出ているはず。

ここまでうまくいったら、後は検索してみるだけなのですが、その前に「システム」→「全般」で「ログインが必要」にチェックを入れて「更新」しておきましょう。そうしないとデフォルトでは認証なしの Guest ロールでの検索になるので、今回の設定では何も検索結果に出てきません。
検索画面は http://IPアドレス:8080/ です。管理画面を開いているのと同じブラウザで開くと admin でログインした状態なので、いったんブラウザを落とすか、ページ上部のアカウント名が表示されている部分をクリックしてログアウトしてください。 1kauser, 2kauser, erai それぞれでログインして検索してみて、意図した通りの出しわけになっていることを確認して完了です。

QooQ