PremiumOpenSearch

※Movable Type クラウド版ではご利用できません。

プラグインの特徴

  • 検索エンジン「Amazon OpenSearch Service」を利用しHTML、PDFやオフィス系ドキュメントの検索を実現する事ができます。
  • PremiumSearch、PremiumOpenSearch はWEBサーバー(公開)とCMSサーバー(非公開)をSiteSyncプラグインでファイル同期させるセキュアな運用・サーバー構成に適したサイト内検索を実現させるために制作しております。
  • このプラグインはPremiumSearchの後継にあたるものです。PremiumSearchで利用した検索エンジンElasticsearchはバージョン 7.10.2以降はライセンス形態が変更されたため、Amazon OpenSearch Serviceへ変更し、機能を追加・改修したプラグインです。
  • DocumentType毎の絞り込みやディレクトリ単位での絞り込みが可能。
  • DataAPIを用いているため、開発者による柔軟なカスタマイズが可能。

プラグインの設定

事前に確認

  • PremiumSearchも利用は可能ですがPremiumOpenSearchと同時に利用することはできません、プラグイン設定でいずれかを無効に設定してください。
  • デフォルトの設定ではいずれも無効となっております。プラグインが有効になっている必要があります。
  • DataAPIが利用出来る必要があります。
  • Amazon OpenSearch Serviceサーバーの設定が別途必要となります。
  • 動作検証は Amazon OpenSearch Service で行っております。
  • Amazon OpenSearch Service に関してはサポート対象外となります。
  • Windowsサーバーでの動作検証は現状未実施となりサポート対象外となります。
  • 設定完了後のサーバー重複(本番環境を複製し検証環境を作成など)はご注意ください。検索インデックスに影響が出る場合がございますので、サーバーを複製する場合はクローラーの停止など対応をおこなってください。

事前に確認【サーバー要件】

Amazon OpenSearch Service

Amazon OpenSearch 2.5で開発・動作確認しています。

CMS(ステージング)サーバー

  • Linux、Solaris / Unix、BSD、Mac OS X を推奨
  • Perl 5.16.x 以上
  • IO::Socket::SSL 2.009以上
  • List::Util 1.55 以上
  • Socket 2.030以上

事前に確認【ネットワーク要件】

  • CMSサーバーから検索サーバーへのHTTP接続許可が必要となります。
  • CMSサーバーと公開サーバーが分離している場合には、CMSサーバーから公開サーバーへのHTTP接続許可が必要となります。
  • エンドユーザーからCMSサーバーのDataAPIへの接続許可が必要となります。

使用方法【プラグインの設定】

プラグイン設定はシステム、サイト、子サイト単位で可能です。

  1. サイトダッシュボードのメニューから、[設定]>[プラグイン]をクリック。
  2. プラグインの管理画面に遷移します。
  3. 一覧の[PremiumOpenSearch]をクリック。
  4. [設定]タブをクリック。
  5. プラグインの設定画面が表示されます。

通常の運用ではシステムで設定をしましょう。
サイト、子サイトではシステムの設定を継承されます。

デフォルト値:継承する

プラグイン設定:Open Search

必須 フィールド名 内容
OpenSearch Server ベースURL

OpenSearch サーバーのベースURLを設定してください。

例:https://search-mtp-dev-os-xyh5tf2qmmtcs4xfyplwte.ap-northeast-1.es.amazonaws.com
AWSコンソール画面
AWSコンソール画面
ElasticSearch インデックス名

ElasticSearch のインデックス名を指定します。

例:my_site
  • サイト・子サイト間で重複しない固有名称にしてください。
  • 小文字のみ利用可能です。
  • \, /, *, ?, ", <, >, |, ` ` (space character), ,, #を含めることはできません。
  • -, _, +で始めることはできません。
  • 255Byteを超えることはできません。

インデックスの命名規則について詳しくは下記のページを参照してください
https://opensearch.org/docs/latest/im-plugin/index/#naming-restrictions-for-indexes

プラグイン設定:クローラー

必須 フィールド名 内容
対象URL

クローラーがクロールするURLを指定します。

例:https://movabletype-premium.com/

クローラーはご指定のURLからクロールを開始します。公開サーバーが分離している場合にはCMSサーバーから公開サーバーへのHTTP接続許可が必要となります。

サイト・子サイトは対象URL以下に自動的にディレクトリパスが挿入されます。継承設定をしている場合でも同様にディレクトリパスが挿入されます。

  URL除外パターン

クロールの対象から除外するURLのパターンを指定してください。改行区切りで複数指定できます。

パターンにはワイルドカードとして *(アスタリスク)を使用できます。

例:news/2019/*/01
  インデックス除外CSSセレクター

検索インデックス作成の対象から除外するためのセレクターをカンマ区切りで指定します。

通常、<header> や <footer> などのページ共通パーツを除外すると検索精度が向上します。

例:header,footer,nav

検索の精度を上げるためにヘッダーやフッターなどは除外しましょう。
タグの指定もできますが .no-crawler など class を設定し除外指定すると便利です。

  フォルダ定義

フォルダ定義をすることで、検索結果画面で指定フォルダによる絞り込み検索が可能になります。

フォルダ定義は JSON 配列で記述する必要があります。

例:
[
{"name":"products", "pattern":"/products/"}
{"name":"news", "pattern":"/news/*"}
]

記述に問題なければ 緑枠、エラーがある場合は 赤枠 で表示されます。

クロックスピード

クローラーのクロックスピードを秒で指定します。1.5 を指定すると 1.5 秒に最大 1 回アクセスします。

サーバー負荷を見て調整するか、夜間・朝方などアクセスが少ない時間帯に実行してください。

初期値:1.5
同時接続数

クローラーの同時接続数を指定します。

1 を指定すると同時アクセスは最大 1 に制限されます。

変更する場合はサーバー負荷に注意してください。

初期値:1
キュー容量

FIFO(先入れ先出し)のクローラーキュー容量を URL 個数で設定します。これはメモリー不足を防ぐための値です。

キュー容量はインデックス容量ではなく、クロール中の一時キューの容量である点に注意してください。

「ピーク」の値がキュー上限に達するとクロール漏れが発生する可能性があります。ピーク実績値より少し大きめに設定してください。

初期値:10000

プラグイン設定:検索

必須 フィールド名 内容
デフォルトの検索結果件数

検索結果の1ページに表示する件数のデフォルト値を設定してください。

ユーザはURLの「s」パラメータを指定することで「最大の検索結果件数」を上限としてサイズを変更できます。

パラメータについては後述のAPIリファレンスを参照ください。

初期値:10
最大の検索結果件数

検索結果の1ページに表示する件数の最大値を設定してください。この値を増やす場合はサーバー負荷に注意してください。

初期値:20
検索タイプ

検索の動作を設定します。入力した検索ワードがすべて含まれるのが「完全一致」です。

初期値:部分一致

部分一致検索について

  • ドキュメント内に出現したキーワードを対象とするため、ヒットしない文言や逆にヒットしすぎる場合があります。
  • ヒットしない場合は検索スコアを下げ、ヒットしすぎる場合は検索スコアを上げる方向に調整します。

完全一致検索について

  • 検索タイプを「完全一致」に設定している場合、1ドキュメントの容量は 32768byte が上限です。
  • HTMLなどのテキストファイルは、32768byte 以降が切り捨てられます。
  • Excel / Word / PDF などのバイナリファイルは検索にヒットしません。 このようなファイルがある場合は部分一致検索の利用をご検討ください。
検索スコア

部分一致検索の場合にヒットする最小スコアを設定します。検索結果が多くヒットしすぎる場合には上方調整します。

スコアの計算に関しては AWS OpenSearch に準じます。

初期値:1

クローラーの実行

クローラーの手動実行(システム)

Movabletype の管理画面からクロール実行を予約できます。以下の画像はシステム管理者権限の管理画面です。
システム管理者のみクロールする対象のサイト(子サイト)を選択し実行できます。

手動で実行する場合でも cron などの定期実行の設定は必要になります。

手動実行の際、depth 指定は、-1 となります。

例:5分間隔
*/5 * * * * ./plugins/PremiumOpenSearch/tools/run_scheduled_crawl.pl

実行ボタンをクリックすることにより、クローリングタスクが登録されます。
その後、本cronが実行されたタイミングで、登録されたクローリングタスクが処理され、サイトのクローリングが開始されます。

手動で実行する場合は以前のインデックスは削除され、新たに作成されます。

クローラーの手動実行(編集者)

システム管理者ではないユーザーにクロールを実行させるには、ロールから[クローリングの実行]の権限を割り当てる必要があります。[クローリングの実行]権限を割り当てるにはシステム管理者の権限が必要です。

手動で実行する場合でも cron などの定期実行の設定は必要になります。

手動実行の際、depth 指定は、-1 となります。

例:5分間隔
*/5 * * * * ./plugins/PremiumOpenSearch/tools/run_scheduled_crawl.pl

実行ボタンをクリックすることにより、クローリングタスクが登録されます。
その後、本cronが実行されたタイミングで、登録されたクローリングタスクが処理され、サイトのクローリングが開始されます。

サイト、子サイト毎にクロールをさせる場合は、サイト、子サイト毎にプラグイン設定をしてください。初期値はシステムの設定が継承されます。

管理者権限がなくてもロール単位で権限を付与することができます。権限を付与されている場合はクロールを実行することができます。

サイトでクロールを実行する場合、子サイトがあれば合わせてクロールされます。子サイトをクロールされたくない場合はフォルダの除外設定やロールや権限を細分化してください。

クローラーのログ

クローラーの実行ログを確認することが可能です。実行ログはサイトメニューの[ツール] > [プレミアムオープンサーチ]より確認可能です。

インデックス(検索エンジンに記録されたWebサイト情報)の削除についてはクロール開始時刻より古いインデックスを全て削除しております。

検索結果画面の実装

MovableType Premium をインストールすると以下テンプレートがシステムのテンプレートモジュール / ウィジェットテンプレートにインストールされます。

テンプレートを元にオリジナルの検索結果画面も実装できます。インストールされたテンプレートをそのまま改変しても構いません。テンプレートを戻したい場合は右側Aのアクションより初期化が可能です。

  • PremiumOpenSearch Container
  • PremiumOpenSearch CSS
  • PremiumOpenSearch JS
  • PremiumOpenSearch Template
  • PremiumOpenSearch Widget(ウィジェットテンプレート)

検索結果画面の実装例

デフォルトのテンプレートでは以上のような検索結果画面が実装できます。
インデックステンプレートに下記記述をお試しください。

    <mt:Include module="PremiumOpenSearch Template" blog_id="0" />