DBFluteを用いて開発されている全文検索システムFess

29
DBFluteを用いて開発されている 全文検索システムFess DBFluteフェス2013

description

DBFluteを利用している全文検索システムFessとクローラフレームワークS2Robotの説明です。S2Robot繋がりでElasticsearch River Web+Kibana3についても簡単に紹介しています。また、DBFlute Mavenプラグインについても説明しています。

Transcript of DBFluteを用いて開発されている全文検索システムFess

Page 1: DBFluteを用いて開発されている全文検索システムFess

DBFluteを用いて開発されている 全文検索システムFess

DBFluteフェス2013

Page 2: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

名前: 菅谷信介 所属: N2SM, Inc. オープンソース活動:

Apache Portals (Jetspeed2など) コミッタ Seasarプロジェクトコミッタ(S2Container,

Teeda, SAStruts, DBFlute, S2Portlet, S2Robot..)

Fessプロジェクト運営 などなど・・・

Blog: http://www.chazine.com/ Twitter: https://twitter.com/shinsuke_sugaya/

自己紹介

Page 3: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

アジェンダ

Fess S2Robot DBFlute Mavenプラグイン まとめ

Page 4: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Fess

Page 5: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

オープンソースの全文検索システム 一昔前だったらnamazuとか…

Solrを検索エンジンとして利用 簡単に利用できることを目指しています! 商用サポートも提供 (N2 Search) Apacheライセンス DBFluteを利用!

Fessとは

Page 6: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

検索ライブラリ Luceneなど

検索サーバ Solr、Elasticsearch、groongaなど

+クローラ Hyper Estraier、Namazu、Nutchなど

検索システム Fess、商用検索システム(GSAとか)

検索分野での立ち位置

クローラやUIを提供することで手軽な導入実現

まず、検索業界的な話…

Page 7: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Webサイトのクロール ファイルシステム(共有フォルダ)のクロール データベースのクロール ブラウザによる管理画面 MS Office、PDF、圧縮ファイルもサポート スマホやガラケーで最適化された画面で検索 ログイン状態で検索結果の出し分け可能 登録したカテゴリごとに検索可能 ドリルダウン検索やジオ・サーチ 検索ログやクリックログで集計 サジェストや関連表示などにも対応

Fessの特徴

Page 8: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

すぐに利用できるようにオールインワンで提供

アーキテクチャ

SAStruts Solr S2Robot

H2Database (MySQL) (Oracle)

Seasar2

DBFlute

アプリケーションサーバ (Tomcatなど)

Fess

DBFluteを利用することで複数のDBに対応

Page 9: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

S2Robotのクロールデータ保存 Fessの設定DBなどのアクセス 管理画面をMavenプラグインで自動生成 自動生成したものを修正して対応

DBFluteにより複数の種類のDBサポート H2Database, MySQL, Oracle

FessとS2Robotで異なるDBFluteを利用 S2RobotはMaven Shadeプラグインでパッケージ名を変更している

DBFluteをどこで利用か?

Page 10: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

利用ケース1

お手軽パターン:何も考えずそのまま使う

Fessサーバ 利用者

Fessサーバ構築ができればすぐに使える 独自の検索画面がある場合には向かない

Page 11: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

利用ケース2

独自検索画面パターン:JSPを修正して独自画面作成

Fessサーバ 利用者

独自の検索画面が利用できる JSPの変更が必要

Page 12: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

利用ケース3

Ajaxパターン:既存のサイトにシームレスに統合

Fessサーバ

利用者

既存のサイトの一部のように表示が可能

既存サーバ

HTMLなどのコンテンツ返却

JSONPで検索結果を返却

Page 13: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

検索画面 管理画面

デモ

Page 14: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Fess 9でさらにパワーアップ ジョブ管理、サジェスト、クラウド対応などなど…

いろんなところで使ってみてください! 複雑な要件や面倒なときは商用サポートを利用してみてくださいー

ソースコードはgithubに移行しました

Fessの今後

Page 15: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

S2Robot

Page 16: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

S2で利用可能なクローラフレームワーク ウェブやファイルシステムをクロール 指定した場所をマルチスレッドでクロール スレッド数、巡回取得数、巡回深さなど、 細かい設定可能

拡張可能な処理ルールでコンテンツ抽出 取得するコンテンツをフィルタ可能 クロールデータ保存にDBFluteを利用 s2robot.diconをincludeすれば利用可能 コンポーネント化されているので、必要に応じて差し替えることで様々な拡張可能

S2Robotとは

Page 17: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

全文検索のインデックス作成 一番多い利用の仕方(だと思います)

サイトの情報抽出 商品情報やニュース情報など、定期的に情報を収集する

クローラの利用シーン

Page 18: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

S2Robotの処理フロー

S2Robot

S2RobotThread S2RobotThread

S2RobotThread S2RobotClient

(Web,FS)

UrlFilter Web

FS

execute()

start() Check the URL

Get the Content

ResponseData

RuleManager Rule

ResponseProcessor

process()

Transformer

ResponseData

ResultData

S2Robot DB

store()

AccessResult

2

3

4

5

6

7

8 9

10

11 12

Web

FS Web

FS

Page 19: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

S2Robotの処理フロー

S2Robot

S2RobotThread S2RobotThread

S2RobotThread S2RobotClient

(Web,FS)

UrlFilter Web

FS

execute()

start() Check the URL

Get the Content

ResponseData

RuleManager Rule

ResponseProcessor

process()

Transformer

ResponseData

ResultData

S2Robot DB

store()

AccessResult

2

3

4

5

6

7

8 9

10

11 12

Web

FS Web

FS

コンテンツ取得

結果の保存

Page 20: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

指定したサイトをクロールして、対象コンテンツだけを抜き出して、定期的に情報収集を行うElasticsearchのプラグイン

Elasticsearchは分散リアルタイム検索& 分析エンジン

Elasticsearh+Kibana3により収集したコンテンツをグラフィカルに表示できる

https://github.com/codelibs/elasticsearch-river-web

Elasticsearch Rivew Web

S2Robotの流れでちょっと脱線的な話ですが…

Page 21: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

コンテンツの抽出

ページ内の取得したい箇所をCSSクエリーで指定する ex. div.title

S2Robotでページを クロール

Page 22: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Elasticsearch+Kibana3

CSSクエリーで指定して取得したコンテンツを一覧

結果をグラフ化

検索条件を指定することで、結果を分析に利用可能

Page 23: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

DBFlute Mavenプラグイン

Page 24: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Maven 2/3用プラグイン DBFluteの.bat/.shを実行 DBFluteをダウンロード&展開 DBFluteのClientを生成 CRUDを自動生成 実行方法 mvn dbflute:download

DBFlute Mavenプラグイン

Page 25: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Mavenプロジェクトを作ったら pom.xmlにplugin設定を記述 mvn dbflute:download mvn dbflute:create-client

ソースコードの生成(DB変更時) mvn dbflute:jdbc mvn dbflute:generate mvn dbflute:sql2entity

基本的な実行

Page 26: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

SAStruts用のアクションクラスやJSP生成 mvn dbflute:generate-crud-tablemeta mvn dbflute:generate-crud

Bootstrapベースの画面生成

CRUD生成

Page 27: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

まとめ

Page 28: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

今後もDBFluteを使っていきます!

まとめ

Page 29: DBFluteを用いて開発されている全文検索システムFess

DBFluteフェス2013

Q&A