DBFluteを用いて開発されている全文検索システムFess
-
Upload
shinsuke-sugaya -
Category
Technology
-
view
2.967 -
download
0
description
Transcript of DBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている 全文検索システムFess
DBFluteフェス2013
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/
自己紹介
DBFluteフェス2013
アジェンダ
Fess S2Robot DBFlute Mavenプラグイン まとめ
DBFluteフェス2013
Fess
DBFluteフェス2013
オープンソースの全文検索システム 一昔前だったらnamazuとか…
Solrを検索エンジンとして利用 簡単に利用できることを目指しています! 商用サポートも提供 (N2 Search) Apacheライセンス DBFluteを利用!
Fessとは
DBFluteフェス2013
検索ライブラリ Luceneなど
検索サーバ Solr、Elasticsearch、groongaなど
+クローラ Hyper Estraier、Namazu、Nutchなど
検索システム Fess、商用検索システム(GSAとか)
検索分野での立ち位置
クローラやUIを提供することで手軽な導入実現
まず、検索業界的な話…
DBFluteフェス2013
Webサイトのクロール ファイルシステム(共有フォルダ)のクロール データベースのクロール ブラウザによる管理画面 MS Office、PDF、圧縮ファイルもサポート スマホやガラケーで最適化された画面で検索 ログイン状態で検索結果の出し分け可能 登録したカテゴリごとに検索可能 ドリルダウン検索やジオ・サーチ 検索ログやクリックログで集計 サジェストや関連表示などにも対応
Fessの特徴
DBFluteフェス2013
すぐに利用できるようにオールインワンで提供
アーキテクチャ
SAStruts Solr S2Robot
H2Database (MySQL) (Oracle)
Seasar2
DBFlute
アプリケーションサーバ (Tomcatなど)
Fess
DBFluteを利用することで複数のDBに対応
DBFluteフェス2013
S2Robotのクロールデータ保存 Fessの設定DBなどのアクセス 管理画面をMavenプラグインで自動生成 自動生成したものを修正して対応
DBFluteにより複数の種類のDBサポート H2Database, MySQL, Oracle
FessとS2Robotで異なるDBFluteを利用 S2RobotはMaven Shadeプラグインでパッケージ名を変更している
DBFluteをどこで利用か?
DBFluteフェス2013
利用ケース1
お手軽パターン:何も考えずそのまま使う
Fessサーバ 利用者
Fessサーバ構築ができればすぐに使える 独自の検索画面がある場合には向かない
DBFluteフェス2013
利用ケース2
独自検索画面パターン:JSPを修正して独自画面作成
Fessサーバ 利用者
独自の検索画面が利用できる JSPの変更が必要
DBFluteフェス2013
利用ケース3
Ajaxパターン:既存のサイトにシームレスに統合
Fessサーバ
利用者
既存のサイトの一部のように表示が可能
既存サーバ
HTMLなどのコンテンツ返却
JSONPで検索結果を返却
DBFluteフェス2013
検索画面 管理画面
デモ
DBFluteフェス2013
Fess 9でさらにパワーアップ ジョブ管理、サジェスト、クラウド対応などなど…
いろんなところで使ってみてください! 複雑な要件や面倒なときは商用サポートを利用してみてくださいー
ソースコードはgithubに移行しました
Fessの今後
DBFluteフェス2013
S2Robot
DBFluteフェス2013
S2で利用可能なクローラフレームワーク ウェブやファイルシステムをクロール 指定した場所をマルチスレッドでクロール スレッド数、巡回取得数、巡回深さなど、 細かい設定可能
拡張可能な処理ルールでコンテンツ抽出 取得するコンテンツをフィルタ可能 クロールデータ保存にDBFluteを利用 s2robot.diconをincludeすれば利用可能 コンポーネント化されているので、必要に応じて差し替えることで様々な拡張可能
S2Robotとは
DBFluteフェス2013
全文検索のインデックス作成 一番多い利用の仕方(だと思います)
サイトの情報抽出 商品情報やニュース情報など、定期的に情報を収集する
クローラの利用シーン
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
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
コンテンツ取得
結果の保存
DBFluteフェス2013
指定したサイトをクロールして、対象コンテンツだけを抜き出して、定期的に情報収集を行うElasticsearchのプラグイン
Elasticsearchは分散リアルタイム検索& 分析エンジン
Elasticsearh+Kibana3により収集したコンテンツをグラフィカルに表示できる
https://github.com/codelibs/elasticsearch-river-web
Elasticsearch Rivew Web
S2Robotの流れでちょっと脱線的な話ですが…
DBFluteフェス2013
コンテンツの抽出
ページ内の取得したい箇所をCSSクエリーで指定する ex. div.title
S2Robotでページを クロール
DBFluteフェス2013
Elasticsearch+Kibana3
CSSクエリーで指定して取得したコンテンツを一覧
結果をグラフ化
検索条件を指定することで、結果を分析に利用可能
DBFluteフェス2013
DBFlute Mavenプラグイン
DBFluteフェス2013
Maven 2/3用プラグイン DBFluteの.bat/.shを実行 DBFluteをダウンロード&展開 DBFluteのClientを生成 CRUDを自動生成 実行方法 mvn dbflute:download
DBFlute Mavenプラグイン
DBFluteフェス2013
Mavenプロジェクトを作ったら pom.xmlにplugin設定を記述 mvn dbflute:download mvn dbflute:create-client
ソースコードの生成(DB変更時) mvn dbflute:jdbc mvn dbflute:generate mvn dbflute:sql2entity
基本的な実行
DBFluteフェス2013
SAStruts用のアクションクラスやJSP生成 mvn dbflute:generate-crud-tablemeta mvn dbflute:generate-crud
Bootstrapベースの画面生成
CRUD生成
DBFluteフェス2013
まとめ
DBFluteフェス2013
今後もDBFluteを使っていきます!
まとめ
DBFluteフェス2013
Q&A