SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
全文検索サーバ Fess 全文検索システム構築時の悩みどころ 
第14回Solr勉強会
名前: 菅谷信介 
所属: N2SM, Inc. (http://www.n2sm.net/) 
オープンソース活動: 
Apache Portals コミッタ 
Seasarプロジェクトコミッタ 
CodeLibsプロジェクト運営 (https://github.com/codelibs) などなど・・・ 
Github: https://github.com/codelibs 
Blog: http://www.chazine.com/ 
Twitter: https://twitter.com/shinsuke_sugaya/ 
自己紹介
アジェンダ 
検索ソフトウェアについて 
Fessとは 
全文検索システム構築の悩みどころ 
Fessの今後
FessはSolrベースの 全文検索サーバです。 検索関連のソフトウェアは いろいろとあるけど まずは全体的なところから…
検索システム 
Fess、商用検索システム(GSAとか) 検索サーバ+クローラ 
Hyper Estraier、Namazu、Nutchなど 検索サーバ 
Solr、Elasticsearch、groongaなど 検索ライブラリ 
Luceneなど 
検索関連のソフトウェア 
検索関連の知識が必要(ガッツリ作りこみが必要) 
検索関連の知識なくても利用可能(すぐに使える) 
ざっくりと個人的な観点で分類してみました
つまり、 FessはSolrと競合するものでは ありません (ターゲットユーザーが異なります)
Fessとは
簡単に構築可能なオープンソースの全文検索サーバ 
Javaがあれば、すぐに利用できます! 
Fess 9.2ではSolr 4.8.1を採用(同梱してます) 
Web、共有フォルダ、DBなどのクロール可能 
MS Office、PDF、圧縮ファイルもサポート 
独自の実装&Tikaで読めるだけ読む 
検索画面はPCからスマホまで最適化された画面で検索 
ブラウザによる管理画面 
ActiveDirectory等の認証情報で検索結果の出し分け可能 
登録したカテゴリごとに検索可能 
ファセット検索やジオ・サーチにも対応 
検索ログやクリックログで集計 
サジェストや関連表示などにも対応 
スクリーンショット表示機能 
Fessとは
すぐに利用できるようにオールインワンで提供 
アーキテクチャ 
Solr インデックス管理 
Fess クローラ 設定情報管理 検索画面 
Tomcat (アプリケーションサーバなど)
Fessの検索結果画面 
デモ:http://search.n2sm.co.jp/
Fessの管理画面
N2SMではFess(Solrを含む)に関する商用サポートを提供 
導入支援からカスタマイズ開発まで 
いろいろな質問等の対応 
商用製品としては、N2 Searchとして提供 
基本はFessと同じ(ブランチ管理されている) 
設定を最適化したパッケージを利用 
ApacheやMySQLなど含めて提供 
管理ユーザなどを管理するコンソール 
ASPとしても提供 
その他 
いろいろとお問い合わせをいただいています 
入札要件にFessが指定されていたりも… 
商用サポート
全文検索システム構築時の 悩みどころ Solrベースの検索システムを作る際のご参考になれば…
Fessのコミュニティや Fess案件を通して 遭遇する事象ベースに 考えてみる…
ケース1 ファイルシステムをクロールして 検索結果をクリックしても 表示されないのですけど…
概要 
http://~ の検索結果ページで、検索結果の file://~ の リンクが機能しない 
Fessを作った当初はブラウザで機能していたが、時間と ともに file://~ の扱いが厳しくなった 
汎用的な解決策がない Fessでの対応 
デスクトップ検索 
ローカル環境でしか利用できない 
ファイルランチャー 
Java Web Startを利用→いろいろと面倒… 
コンテンツプロキシ (デフォルト) 
Fessがプロキシとして動作してコンテンツを返却 
場合によりロール検索と組み合わせが必要 
file://~問題
ケース2 社内の数百万ドキュメントを 夜間バッチで更新したいです でも、1台くらいで…
概要 
社内ドキュメント検索の場合によくある話 
数台のサーバ環境かつ夜間バッチ等で、数百万ドキュメン トを超えるドキュメントを更新する要件 
差分クロールで解決できる範囲ではない 
ファイルサイズやネットワークに依存するが、1台でク ロールすると、1時間あたり数万ドキュメントくらい 
実際には全件更新する必要がない Fessでの対応 
ファイルサーバの更新ファイル一覧生成機能と連携 
データストアクロールで対応 
CSVなどの更新ファイル一覧情報を元にクロール 
更新ファイルだけを効率よくインデックス化 
クロール時間問題
ケース3 Webは月曜、 共有フォルダは水曜、 DBは金曜に クロールしたいのだけど…
概要 
複雑なスケジュールでクロールやインデックスのコミット などを組みたい 
昔のFessでは基本は1つのスケジュールを組んで、クロー ルからインデックスまで行う方式でした Fessでの対応 
ジョブ管理機能を実装しました 
ログのパージなどもジョブとして処理 
Groovyで任意のジョブを組むことができます 
他のスクリプト言語も対応可能ですが、現時点では Groovyだけをサポート 
クロールジョブ問題
ケース4 クロールが止まるのですけど…
概要 
クロールのスレッドが止まる事象が発生する 
Javaのバグ 
Zip爆弾(Excelも?) Fessでの対応 
昔のFessではTomcat上のスレッドでクロールを実行してい たがスレッドを停止できないため、現在は別のプロセスと してクロールを実行 
Zip爆弾等は利用するライブラリを更新したり、独自の拡張 したりして対応 
クロール停止問題
ケース5 PDFをクロールしたのですが 文字化けしているようです…
概要 
FessではPDFBoxでPDFからテキスト抽出を行っている 
PDF仕様の古いバージョンなどで文字化けする Fessでの対応 
テキスト抽出処理はS2Robotで管理している 
設定ファイルでMIMEタイプごとに処理をカスタマイズ可能 
対応はケースバイケースですが、コマンド呼び出しや IFilterなど、要件に応じた対応が必要 
MS Office系のファイルのテキスト抽出はPOIを利用してい るが、抽出できないものがあれば同様の対応 
PDF文字化け問題
ケース6 クリック数やお気に入り数で リアルタイムに ソートしたいです…
概要 
そのときのクリック数やお気に入り数でソートしたい 
クリック数やお気に入り数はSolr内でドキュメントに含ま れている 
ドキュメントを更新して、コミットしないと情報が 反映されない 
クリックされるたびにコミットするのは微妙… Fessでの対応 
クリック数やお気に入り数の数値はDocValueのフィールド として格納する 
Solrで更新するインターフェースがなかったため、Fessで は数値のDocValueを更新するSolrプラグインを提供 
リアルタイム更新問題
ケース7 辞書ファイルを更新するのに 再起動が必要なの?
概要 
形態素解析やシノニムなどの辞書はインデックスで初回に 読み込まれる 
辞書の反映に再起動&再インデクシングが必要 
政治的な要件な気がする Fessでの対応 
辞書を動的に再読み込みをする拡張 
Tokenizerのインスタンスを動的に差し替える 
再インデクシングは必要 
積極的に採用するかは置いておいて… 
辞書反映問題
まとめ Fessの今後
Fessの今後 
Solrの更新と共に、今後も更新していきます! 
検索ログを利用したサジェストも導入 
現在はコンテンツベース 
キーマッチ機能 
独自のQuery Elevation 
Go for Global! 
検索ログの表示や分析方法の改善
Q&A

Contenu connexe

Tendances

「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 

Tendances (20)

「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
 
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etcAzure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例第10回solr勉強会 solr cloudの導入事例
第10回solr勉強会 solr cloudの導入事例
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
第15回 Solr勉強会 #SolrJP Amazon CloudSearch Deep Dive
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019チームメイトのためにdocstringを書こう! pyconjp2019
チームメイトのためにdocstringを書こう! pyconjp2019
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearchAWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
 
Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624
 
Solrで日本語全文検索システムの構築と応用
Solrで日本語全文検索システムの構築と応用Solrで日本語全文検索システムの構築と応用
Solrで日本語全文検索システムの構築と応用
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン実践!Elasticsearch + Sudachi を用いた全文検索エンジン
実践!Elasticsearch + Sudachi を用いた全文検索エンジン
 

En vedette

検索のダウンタイム0でバックアップからindexをリストアする方法
検索のダウンタイム0でバックアップからindexをリストアする方法検索のダウンタイム0でバックアップからindexをリストアする方法
検索のダウンタイム0でバックアップからindexをリストアする方法
kbigwheel
 

En vedette (20)

Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 
Guide To AGPL
Guide To AGPLGuide To AGPL
Guide To AGPL
 
Novius os chiba の紹介
Novius os chiba の紹介Novius os chiba の紹介
Novius os chiba の紹介
 
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
 
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
はてなブックマークのトピックページの裏側 in YAPC::Asia Tokyo 2015
 
Elasticsearchを用いたはてなブックマークのトピック生成
Elasticsearchを用いたはてなブックマークのトピック生成Elasticsearchを用いたはてなブックマークのトピック生成
Elasticsearchを用いたはてなブックマークのトピック生成
 
elasticsearchプラグイン入門
elasticsearchプラグイン入門elasticsearchプラグイン入門
elasticsearchプラグイン入門
 
ElasticSearchでいろいろやってる話
ElasticSearchでいろいろやってる話ElasticSearchでいろいろやってる話
ElasticSearchでいろいろやってる話
 
検索のダウンタイム0でバックアップからindexをリストアする方法
検索のダウンタイム0でバックアップからindexをリストアする方法検索のダウンタイム0でバックアップからindexをリストアする方法
検索のダウンタイム0でバックアップからindexをリストアする方法
 
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
 
PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法
 
Tensor Decomposition and its Applications
Tensor Decomposition and its ApplicationsTensor Decomposition and its Applications
Tensor Decomposition and its Applications
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
 
AI社会論研究会
AI社会論研究会AI社会論研究会
AI社会論研究会
 
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
Elasticsearchと科学技術ビッグデータが切り拓く日本の知の俯瞰と発見 前半(15分): SPIAS のご紹介と主な課題
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
 [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent [DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
[DL輪読会]A Bayesian Perspective on Generalization and Stochastic Gradient Descent
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習
 
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
 

Similaire à 全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ

Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Nao Oec
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonweb
Osamu Monoe
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
 
紹介 絵本レコメ 2014年_技術系01
紹介 絵本レコメ 2014年_技術系01紹介 絵本レコメ 2014年_技術系01
紹介 絵本レコメ 2014年_技術系01
matsutomu
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
 

Similaire à 全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ (20)

DBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFessDBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFess
 
Firefox os hackathon
Firefox os hackathonFirefox os hackathon
Firefox os hackathon
 
20170809 AWS code series
20170809 AWS code series20170809 AWS code series
20170809 AWS code series
 
Web is the OS (Firefox OS)
Web is the OS (Firefox OS)Web is the OS (Firefox OS)
Web is the OS (Firefox OS)
 
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
Shizuokapy4_データヴィジュアライズのための簡単なWeb API開発まめ知識
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonweb
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonweb
 
Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefox
 
Kerasで可視化いろいろ
Kerasで可視化いろいろKerasで可視化いろいろ
Kerasで可視化いろいろ
 
ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析ビッグデータ関連Oss動向調査とニーズ分析
ビッグデータ関連Oss動向調査とニーズ分析
 
DC/OS as PaaS : paasjp#36
DC/OS as PaaS : paasjp#36DC/OS as PaaS : paasjp#36
DC/OS as PaaS : paasjp#36
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
Php on windows vol.2 - session.1 - 公開用
Php on windows   vol.2 - session.1 - 公開用Php on windows   vol.2 - session.1 - 公開用
Php on windows vol.2 - session.1 - 公開用
 
AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825
 
紹介 絵本レコメ 2014年_技術系01
紹介 絵本レコメ 2014年_技術系01紹介 絵本レコメ 2014年_技術系01
紹介 絵本レコメ 2014年_技術系01
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
 
Apps for Web Platform
Apps for Web PlatformApps for Web Platform
Apps for Web Platform
 
Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Payment
 
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
 
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクトSpring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
 

Plus de Shinsuke Sugaya

Solrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ FessSolrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ Fess
Shinsuke Sugaya
 

Plus de Shinsuke Sugaya (8)

LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
 
PredictionIOのPython対応計画
PredictionIOのPython対応計画PredictionIOのPython対応計画
PredictionIOのPython対応計画
 
PredictionIO構築入門
PredictionIO構築入門PredictionIO構築入門
PredictionIO構築入門
 
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールElasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
 
DBFlute Mavenプラグインを用いてCRUD作成
DBFlute Mavenプラグインを用いてCRUD作成DBFlute Mavenプラグインを用いてCRUD作成
DBFlute Mavenプラグインを用いてCRUD作成
 
Solrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ FessSolrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ Fess
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
オフィスに1台!全文検索Fess
オフィスに1台!全文検索Fessオフィスに1台!全文検索Fess
オフィスに1台!全文検索Fess
 

全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ