今回はFessでSharePoint Server 2019をクロールする方法について説明します。解説に使用するバージョンは、Fess 13.11です。事前に公式サイトからZIPファイルを入手し、インストールガイドを参考にして、FessとElasticsearchをインストールしておいてください。

プラグインのインストール

Fessの起動後、管理者としてログインして、SharePoint Server内のデータをクロールするためのプラグインをインストールします。

管理画面の左メニューで「システム」→「プラグイン」をクリックし、画面左上の「インストール」をクリックします。ここで、プルダウンメニューから「fess-ds-sharepoint-13.11.1」を選択し、「インストール」ボタンをクリックしてプラグインをインストールしてください。

インストール

インストール後、プラグインの一覧画面を表示して「fess-ds-sharepoint」が表示されていることを確認します。

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に関するご質問は公式フォーラムまで。