この記事では,全文検索サーバー Fessを利用してSalesforce内のオブジェクトを横断検索する方法を紹介します.
これはFess上で実際に検索を行っている画面のスクリーンショットです.
導入手順
FessでSalesforceを横断検索するための手順を説明します.
導入の流れは次のようになります.
- Fessの起動
- プラグイン追加
- 認証設定
- Fessの設定・クローラ実行
1. Fessの起動
「起動および停止方法」を参考にFessを起動します.
2. プラグイン追加
「プラグイン」を参考にfess-ds-salesforce-xx.x.xをインストールします。
3. 認証設定
データを取得するためには,認証情報をパラメータとして与える必要があります.
3-1. 証明書準備
「証明書」と「秘密鍵」を準備する必要があります.
ここでは,Salesforceの自己署名証明書を用いる方法を紹介します.
「自己署名証明書の生成」を参考に,証明書を作成します.この時,指定した表示ラベル(エイリアス)を以降fess
とします.
「キーストアにエクスポート」を行います.この時,ダウンロードしたファイル名を以降fess.jks
とします.
キーストアから証明書(fess.crt
)を取り出します.
keytool -exportcert -keystore fess.jks -alias fess -file fess.crt
キーストアから秘密鍵(key.pem
)を取り出します.
keytool -importkeystore \
-srckeystore fess.jks \
-srcstorepass "" \
-destkeystore fess.p12 \
-deststoretype PKCS12 \
-srcalias fess \
-deststorepass changeit \
-destkeypass changeit
openssl pkcs12 -password pass:changeit -in store.p12 -nodes -nocerts | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > key.pem
実際にパラメータとして与える時は改行が不要なため,以下で出力される文字列を利用します.
cat key.pem | tr -d '\n'
3-2. アプリケーション作成
「接続アプリケーションの作成」を参考にアプリケーションを作成します.
その際,必須情報に加え,
「OAuth設定の有効化」のチェックを入れ,
「コールバックURL」にhttps://login.salesforce.com/services/oauth2/success
を入力し,
「デジタル署名を使用」のチェックを入れて,先程の証明書ファイルを選択し,
「選択したOAuth範囲」でapi
openid
offline_access
を追加します.
アプリケーションを作成したら,コンシューマ鍵(client_id)を取得して,
https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=${client_id}&redirect_uri=https://login.salesforce.com/services/oauth2/success
からアプリケーションに許可を与えます.
4. Fessの設定・クローラ実行
Salesforceをクロールするための設定をします.
「データストアクロール」も参考にしてください.
4-1. クローラの設定
Fessの管理画面を開き,クローラ > データストア
と移動し,新規作成をします.
新規作成画面では,
- 名前
- ハンドラ
- パラメータ
の4項目を設定して,作成を完了します.
「名前」には好きな文字列を入力してください.
「ハンドラ」はSalesforce
を選択してください.
「パラメータ」は次のようなフォーマットで入力してください.
base_url=https://login.salesforce.com
auth_type=oauth
username=admin@example.com
client_id=3MVG9I1kFE5Iul2DewTbNB1_YcSY0ptj5SCZIhdYPfIsVczSBZWGZRYSUs8tRyRgDRucoa8IK_bEnAwRzgbSZ
private_key=MIIEvQ...
custom=FessObj,...
FessObj.title=name
FessObj.contents=name,body
キーと値の説明は次のようになります.
キー | 値 |
---|---|
base_url | SalesforceサーバーのURL(https://test.salesforce.com 等) |
username | ユーザー名 |
auth_type |
oauth またはpassword (passwordの場合,password client_secret が必要) |
client_id | 3-2で取得したコンシューマ鍵 |
private_key | 3-1で作成した秘密鍵 |
custom | カスタムオブジェクト名(, 区切り) |
${オブジェクト名}.title | 検索結果でタイトルに該当する項目名 |
${オブジェクト名}.contents | ドキュメントのコンテンツ(インデックス対象文字列)に該当する項目名(, 区切り) |
4-2. ジョブスケジューラの作成
4-1で作成したクロールをクリックすると,クロール設定が開き,そこから「新しいジョブの作成」をします.
後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しい設定については,「スケジューラ」を参考にしてください.
4-3. クローラの実行
システム > スケジューラ
と移動し,4-2で作成したジョブを開きます.
その画面から,「今すぐ開始」をします.
状態が「実行中」から「有効」になるまで待ちます.
4-4. 検索のテスト
これでFessでSalesforceを横断検索することが出来るようになりました.