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
Shinsuke Sugaya
June 27, 2016
Technology
0
240
Elasticsearchベースの全文検索システムFess
FessでどのようにElasticsearchを利用しているかなどを説明しています。
Shinsuke Sugaya
June 27, 2016
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
社内ドキュメント検索システム構築のノウハウ
marevol
0
390
LastaFluteでKotlinをはじめよう
marevol
0
380
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
950
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.2k
PredictionIO構築入門
marevol
0
4.3k
PredictionIOのPython対応計画
marevol
0
4.1k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
2.9k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
260
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
530
Other Decks in Technology
See All in Technology
振り返りTransit Gateway ~VPCをいい感じでつなげるために~
masakiokuda
4
230
データ戦略部門 紹介資料
sansan33
PRO
1
3.3k
Ktor + Google Cloud Tasks/PubSub におけるOTel Messaging計装の実践
sansantech
PRO
1
200
AIでテストプロセス自動化に挑戦する
sakatakazunori
1
650
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
39k
ObsidianをLLM時代のナレッジベースに! クリッピング→Markdown→CLI連携の実践
srvhat09
7
8.5k
P2P通信の標準化 WebRTCを知ろう
faithandbrave
6
2.1k
Figma Dev Mode MCP Serverを用いたUI開発
zoothezoo
1
290
Shadow DOMとセキュリティ - 光と影の境界を探る / Shibuya.XSS techtalk #13
masatokinugawa
0
240
自分がLinc’wellで提供しているプロダクトを理解するためにやったこと
murabayashi
1
150
Expertise as a Service via MCP
yodakeisuke
0
120
Microsoft Defender XDRで疲弊しないためのインシデント対応
sophiakunii
3
390
Featured
See All Featured
How GitHub (no longer) Works
holman
314
140k
For a Future-Friendly Web
brad_frost
179
9.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
RailsConf 2023
tenderlove
30
1.2k
Become a Pro
speakerdeck
PRO
29
5.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Building an army of robots
kneath
306
45k
Being A Developer After 40
akosma
90
590k
The Cult of Friendly URLs
andyhume
79
6.5k
Balancing Empowerment & Direction
lara
1
480
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
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を用いた検索 (画像とか) まとめ