SlideShare a Scribd company logo
1 of 29
Download to read offline
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/




DBFluteフェス2013
アジェンダ





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

DBFluteフェス2013
Fess

DBFluteフェス2013
Fessとは


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








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

DBFluteフェス2013
検索分野での立ち位置
まず、検索業界的な話…

検索ライブラリ
Luceneなど
検索サーバ
Solr、Elasticsearch、groongaなど
+クローラ
Hyper Estraier、Namazu、Nutchなど
検索システム
Fess、商用検索システム(GSAとか)
クローラやUIを提供することで手軽な導入実現
DBFluteフェス2013
Fessの特徴















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

DBFluteフェス2013
アーキテクチャ
すぐに利用できるようにオールインワンで提供
Fess
SAStruts

S2Robot

Seasar2

DBFlute
H2Database
(MySQL)
(Oracle)

Solr

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

DBFluteを利用することで複数のDBに対応
DBFluteフェス2013
DBFluteをどこで利用か?






S2Robotのクロールデータ保存
Fessの設定DBなどのアクセス
管理画面をMavenプラグインで自動生成
 自動生成したものを修正して対応
DBFluteにより複数の種類のDBサポート
 H2Database, MySQL, Oracle
FessとS2Robotで異なるDBFluteを利用
 S2RobotはMaven Shadeプラグインで
パッケージ名を変更している

DBFluteフェス2013
利用ケース1
お手軽パターン:何も考えずそのまま使う

利用者

Fessサーバ

Fessサーバ構築ができればすぐに使える
独自の検索画面がある場合には向かない
DBFluteフェス2013
利用ケース2
独自検索画面パターン:JSPを修正して独自画面作成

Fessサーバ

利用者

独自の検索画面が利用できる
JSPの変更が必要
DBFluteフェス2013
利用ケース3
Ajaxパターン:既存のサイトにシームレスに統合
HTMLなどのコンテンツ返却

既存サーバ
利用者
JSONPで検索結果を返却

Fessサーバ

既存のサイトの一部のように表示が可能
DBFluteフェス2013
デモ
検索画面
管理画面

DBFluteフェス2013
Fessの今後






Fess 9でさらにパワーアップ
 ジョブ管理、サジェスト、クラウド対応
などなど…
いろんなところで使ってみてください!
 複雑な要件や面倒なときは商用サポート
を利用してみてくださいー
ソースコードはgithubに移行しました

DBFluteフェス2013
S2Robot

DBFluteフェス2013
S2Robotとは












S2で利用可能なクローラフレームワーク
ウェブやファイルシステムをクロール
指定した場所をマルチスレッドでクロール
スレッド数、巡回取得数、巡回深さなど、
細かい設定可能
拡張可能な処理ルールでコンテンツ抽出
取得するコンテンツをフィルタ可能
クロールデータ保存にDBFluteを利用
s2robot.diconをincludeすれば利用可能
コンポーネント化されているので、必要に応
じて差し替えることで様々な拡張可能

DBFluteフェス2013
クローラの利用シーン



全文検索のインデックス作成
 一番多い利用の仕方(だと思います)
サイトの情報抽出
 商品情報やニュース情報など、定期的に
情報を収集する

DBFluteフェス2013
S2Robotの処理フロー
execute()
S2Robot
2 start()

UrlFilter

3

Check the URL

S2RobotThread
S2RobotThread
S2RobotThread
9 process()

4
6

S2RobotClient
(Web,FS)

ResponseData
7

Rule 8

ResponseProcessor

12 store() 11

10ResponseData

AccessResult ResultData

S2Robot DB

DBFluteフェス2013

RuleManager

Transformer

5

Web
Web
FS
Web
FS
FS

Get the Content
S2Robotの処理フロー
execute()
S2Robot
2 start()

UrlFilter

3

Check the URL

S2RobotThread
S2RobotThread
S2RobotThread
9 process()

S2RobotClient
コンテンツ取得

4
6

(Web,FS)

ResponseData
7

Rule 8

ResponseProcessor

12 store() 11

DBFluteフェス2013

RuleManager

10ResponseData

AccessResult ResultData

結果の保存
S2Robot DB

5

Transformer

Web
Web
FS
Web
FS
FS

Get the Content
Elasticsearch Rivew Web
S2Robotの流れでちょっと脱線的な話ですが…






指定したサイトをクロールして、対象コンテ
ンツだけを抜き出して、定期的に情報収集を
行うElasticsearchのプラグイン
Elasticsearchは分散リアルタイム検索&
分析エンジン
Elasticsearh+Kibana3により収集したコン
テンツをグラフィカルに表示できる
https://github.com/codelibs/elasticsearch-river-web

DBFluteフェス2013
コンテンツの抽出
S2Robotでページを
クロール

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

DBFluteフェス2013
Elasticsearch+Kibana3
検索条件を指定す
ることで、結果を
分析に利用可能

結果をグラフ化

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

DBFluteフェス2013
DBFlute Mavenプラグイン

DBFluteフェス2013
DBFlute Mavenプラグイン









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

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
CRUD生成




SAStruts用のアクションクラスやJSP生成
 mvn dbflute:generate-crud-tablemeta
 mvn dbflute:generate-crud
Bootstrapベースの画面生成

DBFluteフェス2013
まとめ

DBFluteフェス2013
まとめ

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

DBFluteフェス2013
Q&A

DBFluteフェス2013

More Related Content

What's hot

Apache Solrで実現する共創のエコ システム ‒検索、クロール、自然言語処理‒
Apache Solrで実現する共創のエコ システム  ‒検索、クロール、自然言語処理‒Apache Solrで実現する共創のエコ システム  ‒検索、クロール、自然言語処理‒
Apache Solrで実現する共創のエコ システム ‒検索、クロール、自然言語処理‒
MasayukiIke
 

What's hot (20)

SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
Apache Solrで実現する共創のエコ システム ‒検索、クロール、自然言語処理‒
Apache Solrで実現する共創のエコ システム  ‒検索、クロール、自然言語処理‒Apache Solrで実現する共創のエコ システム  ‒検索、クロール、自然言語処理‒
Apache Solrで実現する共創のエコ システム ‒検索、クロール、自然言語処理‒
 
はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会
 
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
 
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
 
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールElasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
 
solr勉強会資料
solr勉強会資料solr勉強会資料
solr勉強会資料
 
社内ドキュメント検索システム構築のノウハウ
社内ドキュメント検索システム構築のノウハウ社内ドキュメント検索システム構築のノウハウ
社内ドキュメント検索システム構築のノウハウ
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
hs_spider_hs_something_20110906
hs_spider_hs_something_20110906hs_spider_hs_something_20110906
hs_spider_hs_something_20110906
 
Apache Solr 入門
Apache Solr 入門Apache Solr 入門
Apache Solr 入門
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 
Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介
 
AlfrescoとSolr(後編)
AlfrescoとSolr(後編)AlfrescoとSolr(後編)
AlfrescoとSolr(後編)
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
類義語検索と類義語ハイライト
類義語検索と類義語ハイライト類義語検索と類義語ハイライト
類義語検索と類義語ハイライト
 

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

dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn
 

Similar to DBFluteを用いて開発されている全文検索システムFess (20)

Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdfFlutter Meetup Tokyo (#18) _ Osaka (#10).pdf
Flutter Meetup Tokyo (#18) _ Osaka (#10).pdf
 
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
 
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
 
kintoneではじめるビジネスインテリジェンス
kintoneではじめるビジネスインテリジェンスkintoneではじめるビジネスインテリジェンス
kintoneではじめるビジネスインテリジェンス
 
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
20151024 Azureデータストア概要
20151024 Azureデータストア概要20151024 Azureデータストア概要
20151024 Azureデータストア概要
 
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
 
インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門インフォグラフィックス時代のD3.js入門
インフォグラフィックス時代のD3.js入門
 
非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表
 

Recently uploaded

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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