PremiumSearch

Elasticsearchを用いた全文検索

このプラグインは、検索エンジン「Elasticsearch」を利用しHTML、PDFやオフィス系ドキュメントの検索を実現する事ができます。

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

プラグインの特徴

  • Elasticsearchを利用したインデックス型全文検索が可能です。
  • PDFやOfficeドキュメントの検索が可能です。
  • DocumentType毎の絞り込みやディレクトリ単位での絞り込みが可能です。
  • DataAPIを用いているため、開発者による柔軟なカスタマイズが可能です。
  • プラグインが有効になっている必要があります。
  • DataAPIが利用出来る必要があります。
  • Elasticsearchサーバーの設定が別途必要となります。
  • 動作検証はAmazon Elasticsearch Serviceで行っております。
  • Elasticsearch及びAmazon Elasticsearch Serviceに関してはサポート対象外となります。
  • Windowsサーバーでの動作検証は現状未実施となりサポート対象外となります。
  • 設定完了後のサーバー重複(本番環境を複製し検証環境を作成など)はご注意ください。検索インデックスに影響が出る場合がございますので、サーバーを複製する場合はクローラーの停止など対応をおこなってください。

サーバー要件

Elasticsearchサーバー

  • ElasticSearch 6.3以上
  • Amazon Elasticsearch Service を推奨

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

  • Linux、Solaris / Unix、BSD、Mac OS X を推奨
  • Perl 5.16.x 以上

ネットワーク要件

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

初期設定1「プラグインの設定」

プラグイン設定はサイト、子サイト単位で可能です。サイトダッシュボードのメニューから、[設定]>[プラグイン]をクリックし、プラグインの管理画面に遷移します。一覧の[PremiumSearch]をクリックして[設定]タブをクリックすると、プラグインの設定画面が表示されます。

PremiumSearchプラグイン設定画面

プラグイン設定項目一覧

フィールド名

必須

内容

ElasticSearch Server ベースURL

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

例:http://elasticsearch:920

ElasticSearch インデックス名

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

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

インデックスの命名規則について詳しくは下記のページを参照してください
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/indices-create-index.html

対象URLプレフィックス

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

例:https://www.skyarc.co.jp

URL

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

例:https://www.skyarc.co.jp/index.html

URL除外パターン

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

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

例:news/2019/*/01

インデックス除外CSSセレクター

検索インデックス作成の対象となるコンテンツから除外するための

セレクターをカンマ区切りで指定します。

通常、<header>や<footer>などのセクションはそのページの本質的なコンテンツではなくサイト共通のパーツです。この値を設定することにより検索結果の精度向上が期待できます。

例:header,footer,nav

フォルダ定義

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

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

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

クロックスピード

クローラーのクロックスピードを秒で指定してください。1.5を指定すると、クローラーのサイトへのアクセスは1.5秒間に最大で1回となります。

サーバー負荷を見てご調整頂くか、クローラー実行を夜間や朝方等のアクセスが少ない時間に実施ください。

初期値:1.5

同時接続数

クローラーの同時接続数を指定してください。

1を指定すると、クローラーの同時アクセスは最大で1に制限されます。

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

初期値:1

キュー容量

First-In-First-Out(先入れ先出し)のクローラーキューのキャパシティをURLの個数で設定します。これはメモリー不足を防止します。この数値は結果のインデックスの容量ではなく、クロール中の一時的なキューの容量であることに注意してください。

クローラーログの「peak」の値がキュー容量に達するとクロール漏れが起こる可能性がありますので、peakの実績値を参考にこれより少し大きい数値になるように調整してください。

初期値:10000

デフォルトの検索結果件数

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

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

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

初期値:10

最大の検索結果件数

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

初期値:20

初期設定2「クローラーの定期実行」

初期設定1で設定したクローラーを定期実行することで最新情報が検索結果に反映されます。

クローラーは下記のスクリプトを実行することで動作させます。cron などで定期実行を設定してください。

--blog 1はサイトのIDをご指定ください。

例:./plugins/PremiumSearch/tools/crawl.pl --blog

クローラーの深度を指定することもできます。もし開始URLにトップページを設定しているなら、次のような2つの定期タスクをスケジュールすると良いかもしれません。

  1. depth指定のない日時実行
  2. depth=1の毎時実行

--blog 1はサイトのIDをご指定ください。

例:
0 3 * * * ./plugins/PremiumSearch/tools/crawl.pl --blog 1
0 * * * * ./plugins/PremiumSearch/tools/crawl.pl --blog 1 --dep

depth=-1 は制限なし(デフォルト)、 depth=0 は開始URLのみ、 depth=1 は開始URLとそのリンク先を意味します。

クローラーログ

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

Document Text

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

検索結果画面の実装

リンク先のAPIリファレンス、HTMLを参考に実装してください。
https://github.com/skyarc2/mt-premium/issues/2

目次

スカイアーク

トップに戻る