LoginSignup
21
19

More than 5 years have passed since last update.

Fessでドキュメント検索環境を構築した話

Last updated at Posted at 2017-10-13

やったこと

  • プロジェクトの新規ドキュメントはGitBookで作成しGitで管理
  • 既存のドキュメント(Word、Excel、PDF、テキスト程度のメモ書きなど)はGitに登録
  • GitbookのBuildはcommitが行われる度にJenkinsで自動的に実行
  • Gitに登録されたドキュメントはFessサーバ内に日に1回pullする
  • ドキュメント群をFessで毎日クローリングしインデックス作成
  • 上記はすべてAWSで構築

全体構成

ざっくりとしたものですがこんな感じです。

キャプチャ.PNG

GitBook構築

GitBookインストール

ざっくりと言うと、マークダウン形式でドキュメントを作成し、ビルドすることによって
htmlやPDFを作成し、公開したりプロジェクト内に展開できるツールです。
今回はAWSのEC2上に環境を作成しましたが、GitBook.com上でも行えますので用途に応じて変えたらよいと思います。

インストールに関しては、検索して出てきた先達の方々のを参考にして行いましたので、こちらでは割愛します。

プロジェクトメンバーに公開する

公開に用いたWebサーバはapacheの2.2系を用いました。
GitBookはプロジェクト内のチーム毎に作成しており、都度増減します。
その度にapacheのconfを書き換えるのは面倒なので、VertualDocumentRootを利用しました。
AWSのRoute53で社内用プライベートドメインを割り当て、そのサブドメイン毎にGitBookとJenkinsのジョブを作成します。
workspace以下をドキュメントルートとすることで定義の書き換えの必要性をなくしています。

<VirtualHost *:80>
  ServerName [プライベートドメイン]
  ServerAlias *.[プライベートドメイン]
  VirtualDocumentRoot /var/lib/jenkins/workspace/%1/_book
  <Directory "/var/lib/jenkins/workspace/%1/_book">
    Options Indexes FollowSymLinks
    AllowOverride All
  </Directory>
</VirtualHost>

Jenkinsとの連携

GitBookとJenkins

Jenkinsの Gitlab Plugin を用いて、GitlabのCommitとビルドを連動するようにしました。

キャプチャ.PNG

既存ドキュメントとJenkins

Jenkins内に最新のドキュメントを保持するのが目的です。
理由は後述するFessで利用するためです。

Fess構築

OSSの全文検索エンジンです。
公式にも書いてありますが。ElasticSearchを利用しており
WebAPIも対応しているため、WebベースでのGoogleライクな検索もできれば
APICallによるシステム内の検索部品としての役割も持つことができます。

現在はパッケージインストールに対応しているみたいなので、導入は比較的容易だと思います。
私の時(1年半ほど前)はなかった気がする…。

GitBookをクローリング

GitBookの公開URLに対してクローリングさせる設定を行います。
プロジェクト内で使っている名前などは[]書きで置き換えています。
キャプチャ.PNG

既存ドキュメントのファイルクロール

FessにGitで管理しているドキュメントのインデックスを作成させます。
検索対象は、Jenkinsでリポジトリからpullしたドキュメントが格納されているフォルダです。

クロール対象とするパス項目で、検索で見つかるドキュメントをある程度制御しています。
全ファイル対象だと、不要なゴミファイルまで引っかかってしまったためです。

キャプチャ.PNG

構築して思ったこと

  • GitBookを使う場合はマークダウンに慣れていれば楽
  • Fessでの検索はExcelなどの図形内テキストまで拾ってくれるので細かい検索ができる
  • ドキュメントのアップデートが知りやすくなった
  • OSSだけでもそれなりのものが構築できた
  • Jenkinsおじさんは働き者
21
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
19