Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elasticsearchベースの全文検索システムFess
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shinsuke Sugaya
June 27, 2016
Technology
0
260
Elasticsearchベースの全文検索システムFess
FessでどのようにElasticsearchを利用しているかなどを説明しています。
Shinsuke Sugaya
June 27, 2016
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
社内ドキュメント検索システム構築のノウハウ
marevol
0
430
LastaFluteでKotlinをはじめよう
marevol
0
460
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
990
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.3k
PredictionIO構築入門
marevol
0
4.3k
PredictionIOのPython対応計画
marevol
0
4.2k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
3k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
300
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
600
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
2.8k
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
1
1.1k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
マネージャー版 "提案のレベル" を上げる
konifar
19
12k
Devinを導入したら予想外の人たちに好評だった
tomuro
0
890
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
0
110
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
120
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
1
130
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
820
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
1
170
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
80
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
220
Abbi's Birthday
coloredviolet
2
5.1k
WCS-LA-2024
lcolladotor
0
470
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
240
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Faster Mobile Websites
deanohume
310
31k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Done Done
chrislema
186
16k
Transcript
Elasticsearchベースの 全文検索システムFess 第16回elasticsearch勉強会
第16回elasticsearch勉強会 ▪ Fessとは ▪ FessにおけるElasticsearchまわりの話 ▪ デモ アジェンダ
第16回elasticsearch勉強会 Fessとは
第16回elasticsearch勉強会 ▪ オープンソースの全文検索システム ➔オールインワンで簡単に利用可能 ▪ Apacheライセンスで提供 ▪ Elasticsearchを検索エンジンとして利用 ▪ 現在の最新バージョンは10.1
➔2009/09にSolrベースで1.0をリリース ▪ 商用サポートも提供 (N2 Search) Fessとは http://fess.codelibs.org/ja/
第16回elasticsearch勉強会 クローラやUIを提供することで手軽な導入実現 検索分野での立ち位置 検索関連の知識なくても利用可能(すぐに使える) 検索関連の知識が必要(ガッツリ作りこみが必要) 検索システム ➔ Fess、商用検索システム(GSAとか) 検索サーバ+クローラ ➔
Hyper Estraier、Namazu、Nutchなど 検索サーバ ➔ Solr、Elasticsearch、groongaなど 検索ライブラリ ➔ Luceneなど
第16回elasticsearch勉強会 ▪ Javaの実行環境があればすぐに利用可能 ▪ Web/共有フォルダ/DBなどのクロール ▪ ブラウザによる操作 ▪ MS Office、PDF、圧縮ファイルもサポート
▪ Responsive Web Designに対応 ▪ Active Directory連携 (ロール検索) ▪ ファセット検索やジオ・サーチに対応 ▪ ドキュメントブーストやキーマッチ機能 ▪ 検索ログやクリックログで集計(表示はKibana) ▪ 独自のサジェストを実装 Fessの特徴
第16回elasticsearch勉強会 ▪ SolrからElasticsearchへ ➔ 大規模検索の対応 ▪ Seasar2/SAStrutsからLastaFluteへ ➔ 技術的負債の解消 ▪
DBFluteからESFluteへ ➔ DBをやめて、すべてをESに ▪ ロール検索の強化 ➔ AD/LDAPなどの連携強化 ▪ 国際化 ➔ 27言語のAnalyzerを対応(10.2〜) Fess 10での変更
第16回elasticsearch勉強会 すぐ利用できるようにオールインワンで提供 アーキテクチャ LastaFlute Elasticsearch Fess Crawler Lasta DI ESFlute
Tomcat Boot Fess Elasticsearchは切り離すことも可能
第16回elasticsearch勉強会 Fess 10のディレクトリ構造 ├── app │ ├── META-INF │ ├──
WEB-INF │ ├── css │ ├── images │ └── js ├── bin │ ├── fess │ └── fess.in.sh ├── es │ ├── data │ └── plugins ├── lib │ └── classes ├── logs └── temp Fessのアプリケーション warを展開したもの 実行スクリプト Elasticsearch ・data: インデックスの格納場所 ・plugins: プラグイン ログファイル 一時ファイルファイル Tomcat Boot関連ファイル 標準でElasticsearchを同梱している
第16回elasticsearch勉強会 商用サポート ▪ N2SMではFessに関する商用サポートを提供 ➔ 導入支援からカスタマイズ開発まで ➔ コミュニティはベストエフォート対応だが、商用サポートでは 様々な質問にも期限内に対応 ▪
商用製品としては、N2 Searchとして提供 ➔ Fessにカスタマイズを追加して提供 ➔ 設定を最適化したパッケージを利用 ➔ 約ニ十万語の辞書をバンドル ▪ ASPとしても提供 ▪ お問い合わせはこちら: http://www.n2sm.net/
第16回elasticsearch勉強会 Fessにおける Elasticsearchの話
第16回elasticsearch勉強会 日本語検索
第16回elasticsearch勉強会 ▪ bi-gram/形態素解析のハイブリット検索 ➔ 1文字検索とスコア調整 ▪ 標準フィールドと各言語用フィールドを作成 ➔ 例:titleとtitle_jaなど ▪
bi-gram(standard_analyzer) ➔ 英数字はワード(文字数上限を設定)&ステミング ➔ マルチバイトはbi-gram ▪ 形態素解析(japanese_analyzer) ➔ kuromoji-neologd (elasticsearchプラグイン) ▪ ブラウザの言語設定によって、言語用フィールドを ブーストしてor検索 日本語検索
第16回elasticsearch勉強会 ▪ タームへの一致度が高いもののスコアを上げる ハイブリット検索 “query” : { “bool” : {
“should” : [{ “match” : { “title” : { “query” : “検索語”, “type” : “phrase”, “boost” : 1.0 } },{ “match” : { “title_ja” : { “query” : “検索語”, “type” : “phrase”, “boost” : 2.0 } },{ ...
第16回elasticsearch勉強会 言語自動判定
第16回elasticsearch勉強会 ▪ LangFieldプラグインを利用 https://github.com/codelibs/elasticsearch-langfield ▪ インデクシング時にフィールドの内容を見て copy_toのような動きをする ➔ 登録するJSONには”title”:”〜”というデータを入れて、その文 が日本と判定されれば、title_jaフィールドにcopy_toする
▪ language-detectionをフォークして利用 ➔ https://github.com/shuyo/language-detection 言語自動判定
第16回elasticsearch勉強会 ロール検索
第16回elasticsearch勉強会 ▪ ログイン状態に適した検索結果を表示する ▪ 検索時 ➔ ログイン時に権限情報をセッションに保存 ▪ インデキシング時 ➔
ドキュメントの権限情報フィールドに保存 ▪ 検索時にはbool:filter:termクエリーを利用 ロール検索
第16回elasticsearch勉強会 ▪ 権限情報でfilterクエリーで絞り込む ロール検索 “query” : { “bool” : {
“must” : [...検索条件...], “filter” : [{ "bool" : { "should" : [ { "term" : { "role" : "1guest" } }, { "term" : { "role" : "Rguest" } } ]
第16回elasticsearch勉強会 辞書の配布
第16回elasticsearch勉強会 ▪ Elasticsearchは分離可能なので、APIで辞書ファイ ルの操作できる必要がある ▪ Conifg Syncプラグインを利用 https://github.com/codelibs/elasticsearch-configsync ▪ REST
APIで辞書ファイルをGET/POST ▪ アップロードした情報はElasticsearchがアクセス可 能な場所にファイルとして保存できる 辞書の配布
第16回elasticsearch勉強会 DBFlute/ESFlute
第16回elasticsearch勉強会 ▪ DBFluteはJavaの素晴らしいO/Rマッパー ➔ SpringやOracleなど様々に対応 ➔ https://github.com/dbflute ▪ ESFluteはDBFluteのElasticsearch版 ▪
ESFluteにより必要なJavaクラスを自動生成 ▪ Elasticsearchへの通信はTransportを利用 DBFlute/ESFlute
第16回elasticsearch勉強会 ▪ 自動生成されたエンティティを用いてElasticsearch にアクセス可能 ESFluteのコード例 @Resource private ProductBhv productBhv; …
Product product = new Product(); product.setProductDescription(form.productDescription); product.setProductCategoryCode(form.productCategoryCode); ... productBhv.insert(product, op -> { op.setRefresh(true); // 即時反映 });
第16回elasticsearch勉強会 デモ
第16回elasticsearch勉強会 Fessの検索結果画面 デモ:http://search.n2sm.co.jp/
第16回elasticsearch勉強会 まとめ
第16回elasticsearch勉強会 ▪ Fess 10 ➔ オープンソースの全文検索システム ➔ Elasticsearchのリリースに合わせて更新 ▪ Fessの今後
➔ より大規模検索へ (対象容量が数十TBへ) ➔ Deep Learningを用いた検索 (画像とか) まとめ