今回はFessでSharePoint Server 2019をクロールする方法について説明します。解説に使用するバージョンは、Fess 13.11です。事前に公式サイトからZIPファイルを入手し、インストールガイドを参考にして、FessとElasticsearchをインストールしておいてください。
プラグインのインストール
Fessの起動後、管理者としてログインして、SharePoint Server内のデータをクロールするためのプラグインをインストールします。
管理画面の左メニューで「システム」→「プラグイン」をクリックし、画面左上の「インストール」をクリックします。ここで、プルダウンメニューから「fess-ds-sharepoint-13.11.1」を選択し、「インストール」ボタンをクリックしてプラグインをインストールしてください。
インストール後、プラグインの一覧画面を表示して「fess-ds-sharepoint」が表示されていることを確認します。
Active Directoryの連携
SharePoint ServerでActive Directoryを使用している場合、FessもActive Directoryと連携させることで、Fessで権限情報を取得できます。
管理画面の左メニューで「システム」→「全般」をクリックし、全般の設定を開きます。 LDAP項目を以下のように入力し、「更新」ボタンをクリックします。なお、設定値は例なので、ご利用のActive Directoryサーバの情報を入力してください。
項目 | 設定値 |
---|---|
LDAP URL | ldap://example.co.jp:389 |
Base DN | dc=example, dc=co, dc=jp |
Bind DN | ex_admin@example.co.jp |
パスワード | ex_adminのパスワード |
User DN | %s@example.co.jp |
アカウントフィルタ | (&(objectClass=user)(sAMAccountName=%s)) |
グループフィルタ | (member:1.2.840.113556.1.4.1941:=%s) |
memberOf属性 | memberOf |
クロール設定
Fessのクロール対象は、SharePoint Serverに作成したチームサイトのドキュメントライブラリとリストになります。
クロール設定時は、ドキュメントライブラリ、またはリスト単位で設定します。
例として、以下のサイトにあるドキュメントライブラリとリストをクロールする場合の設定を説明します。SharePointのURL、管理者などの情報は、使用している環境に合わせて読み替えてください。
検証環境の情報 | 登録内容 |
---|---|
SharePointのURL | http://sharepoint-SP/ |
サイト名 | testsite |
ドキュメントライブラリ名 | DocLib |
リスト名 | tasklist |
管理者 | sp_siteadmin |
ドキュメントライブラリのクロール
Fessの管理画面にログインし、「クローラ」→「データストア」→「新規作成」を開き、クロール設定を作成します。設定が必要な項目は以下の4つです。
- 名前
- ハンドラ
- パラメータ
- スクリプト
- パーミッション
「名前」にはこのクロール設定名として任意の文字列を入力し、「ハンドラ」は「SharePointDataStore」を選択してください。
「パラメータ」は、以下のように入力してください。
url=http://sharepoint-SP/
auth.ntlm.user=sp_siteadmin
auth.ntlm.password=sp_siteadminのパスワード
site.name=testsite
site.doclib_path=/Doclib
「スクリプト」は、以下のように入力してください。
url=url
host=host
site=site
title=title
content=content
digest=digest
content_length=content.length()
last_modified=last_modified
created=created
timestamp=last_modified
mimetype=mimetype
filetype=filetype
取得できる値のキーと値の説明は以下になります。
キー | 説明 |
---|---|
url | URL(検索結果に表示されるリンク) |
host | ホスト名 |
site | サイトパス |
title | タイトル |
content | ドキュメントのコンテンツ |
digest | 検索結果に表示されるダイジェスト部分 |
content_length | ドキュメントのサイズ |
last_modified | ドキュメントの最終更新日時 |
created | ドキュメントの作成日時 |
timestamp | ドキュメントの更新日時 |
mimetype | ドキュメントのMIMEタイプ |
filetype | ドキュメントの種類 |
「パーミッション」には、デフォルトで「{role}guest」が入っています。このままだと、権限を持たないユーザーも検索できてしまうので、「{role}guest」を削除して、空欄にします。
管理画面の左メニュー「システム」→「スケジューラ」で「Default Crawler」のジョブを開きます。「今すぐ開始」をクリックしてクローラを開始し、ジョブの状態が「実行中」から「有効」になるまで待ちます。
クロール完了後、管理画面からログアウトして、ドメインユーザーでFessにログインします。ログイン後に、検索画面から検索語を入力して検索してください。ドメインユーザーでログインしているので、権限が一致する結果のみ表示されます。
複数のクロール設定を作成してみて、検索結果がわかりにくい場合には「スクリプト」でタイトルに「title=”[DocLib]” + title」のように接頭子を付加するとわかりやすくなります。
リストのクロール
リストもデータストアクロールの画面で設定します。Fessの管理画面にログインし、「クローラ」→「データストア」→「新規作成」を開き、「ハンドラ」で「SharePointDataStore」を選択してください。
「パラメータ」は、以下のように入力してください。
url=http://sharepoint-SP/
auth.ntlm.user=sp_siteadmin
auth.ntlm.password=sp_siteadminのパスワード
site.name=testsite
site.list_name=tasklist
「スクリプト」は、以下のように入力してください。
url=url
host=host
site=site
title=title
content=content
digest=digest
content_length=content.length()
last_modified=last_modified
created=created
timestamp=last_modified
mimetype=mimetype
filetype=filetype
「パーミッション」は「{role}guest」を削除して、空欄にします。
管理画面の左メニュー「システム」→「スケジューラ」で「Default Crawler」のジョブを開きます。「今すぐ開始」をクリックして、クローラを開始し、ジョブの状態が「実行中」から「有効」になるまで待ちます。
クロール完了後、管理画面からログアウトして、ドメインユーザでログインします。 ログイン後に検索画面から検索語を入力して検索してください。 ドキュメントライブラリと同様に、権限が一致する結果のみ表示されます。
リストの場合、「content」に登録するフィールド名を指定したい場合は、「パラメータ」に「list.item.content.include_fields」を追加し、フィールド名を指定します。フィールド名を除外する場合は「list.item.content.exclude_fields」で指定します。
list.item.content.include_fields=Status,Priority,Body,AssignedTo,PercentComplete,StartDate
また、ドキュメントライブラリと同様、「スクリプト」で「title=”[リスト名]” + title」のようにすることで、検索結果のタイトルをわかりやすくすることができます。
* * *
今回は、SharePoint Server 2019のサイト内をクロールする方法を紹介しました。 サイトで設定された権限も取得できるので、ユーザーごとに適切な検索結果を表示することができます。SharePoint Serverのサイト内の情報を検索する際は、ぜひ参考にしてみてください。
著者紹介
菅谷 信介 (Shinsuke Sugaya)
Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。
本連載の内容やFessに関するご質問は公式フォーラムまで。