Submit Search
Upload
Apache Solr 入門
•
Download as PPTX, PDF
•
1 like
•
10,144 views
順
順平 西本
Follow
第20回 lucene/solr勉強会 発表資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 31
Download now
Recommended
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記
Takahiro Matsumiya
はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会
Noritsugu Suzuki
Solrで日本語全文検索システムの構築と応用
Solrで日本語全文検索システムの構築と応用
Syuta Hashimoto
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Recommended
pixiv サイバーエージェント共同勉強会 solr導入記
pixiv サイバーエージェント共同勉強会 solr導入記
Takahiro Matsumiya
はじめての検索エンジン&Solr 第13回Solr勉強会
はじめての検索エンジン&Solr 第13回Solr勉強会
Noritsugu Suzuki
Solrで日本語全文検索システムの構築と応用
Solrで日本語全文検索システムの構築と応用
Syuta Hashimoto
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
Shinsuke Sugaya
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
モノタロウを支える Solr による商品検索システム
モノタロウを支える Solr による商品検索システム
株式会社MonotaRO Tech Team
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
Yahoo!デベロッパーネットワーク
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Web Services Japan
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL Co., Ltd.
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
solr勉強会資料
solr勉強会資料
Atsushi Takayasu
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
More Related Content
What's hot
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
Shinsuke Sugaya
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
モノタロウを支える Solr による商品検索システム
モノタロウを支える Solr による商品検索システム
株式会社MonotaRO Tech Team
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
Yahoo!デベロッパーネットワーク
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Web Services Japan
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL Co., Ltd.
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Takeru Maehara
What's hot
(20)
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
モノタロウを支える Solr による商品検索システム
モノタロウを支える Solr による商品検索システム
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
Docker Compose 徹底解説
Docker Compose 徹底解説
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
LIFULL HOME'SでのSolrの構成と運用の変遷
LIFULL HOME'SでのSolrの構成と運用の変遷
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
Similar to Apache Solr 入門
solr勉強会資料
solr勉強会資料
Atsushi Takayasu
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
SPARQLアプリケーション開発
SPARQLアプリケーション開発
Toshiaki Katayama
RESTful Web API Design
RESTful Web API Design
Akinari Tsugo
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
Kazuhiro Sera
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
Yu Ishikawa
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM,INC
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
VirtualTech Japan Inc.
20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_search
Kazuhiro Wada
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
Yohei Azekatsu
DBP-004_クラウドファーストをリードする Azure SQL Database の仕組みと新機能Dbp 004 クラウドファース
DBP-004_クラウドファーストをリードする Azure SQL Database の仕組みと新機能Dbp 004 クラウドファース
decode2016
Elasticsearch 20150107
Elasticsearch 20150107
ShingoOKAWA
デザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azure
Sunao Tomita
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake
LODを使ってみよう!
LODを使ってみよう!
uedayou
BPStudy20121221
BPStudy20121221
Shinichiro Takezaki
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Amazon Web Services Japan
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
JJUG CCC 2014 ATL
JJUG CCC 2014 ATL
Recruit Technologies
Similar to Apache Solr 入門
(20)
solr勉強会資料
solr勉強会資料
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
SPARQLアプリケーション開発
SPARQLアプリケーション開発
RESTful Web API Design
RESTful Web API Design
Scala が支える医療系ウェブサービス #jissenscala
Scala が支える医療系ウェブサービス #jissenscala
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
2015-11-17 きちんと知りたいApache Spark ~機械学習とさまざまな機能群
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
20180922 jazug8 cosmosdb_search
20180922 jazug8 cosmosdb_search
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
DBP-004_クラウドファーストをリードする Azure SQL Database の仕組みと新機能Dbp 004 クラウドファース
DBP-004_クラウドファーストをリードする Azure SQL Database の仕組みと新機能Dbp 004 クラウドファース
Elasticsearch 20150107
Elasticsearch 20150107
デザインパターンから見た AWS と Azure
デザインパターンから見た AWS と Azure
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
LODを使ってみよう!
LODを使ってみよう!
BPStudy20121221
BPStudy20121221
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
JJUG CCC 2014 ATL
JJUG CCC 2014 ATL
Apache Solr 入門
1.
Apache Solr 入門 第20回
SOLR勉強会
2.
自己紹介 • 西本 順平 •
デジタル・インフォメーション・テクノロジー株式会社 • Solr/Elasticsearch 導入 運用 改善 (Solr歴 6年) • 少年サッカーコーチ • ランニングで23kmを帰宅がマイブーム
3.
Apache Solr • オープンソースソフトウェア・コミュニティのApache
Software Foundationに 2006年に登録され2007年から支援・管理され、無償で利用し続けることが保証 されている • コミュニティが活発であり、不具合に対して、迅速に修正される • 拡張性の高いインターフェースが用意されており、カスタマイズ可能である
4.
一般的なシステム構成 Solr サーバ Web サーバ Batch サーバ index RDB internet 社内文書 etc… 凡例) 検索 更新 インポート 検索対象リソース
5.
Solrサーバ構成 Jetty Solr Lucene Java アプリケーションサーバ 検索・更新リクエストを提供するサーバ機能 Indexへの操作を提供する機能
6.
一般的な検索方式 • 順次検索方式 • 検索対象のドキュメントを先頭から検索する •
grep コマンド、RDBのLIKE検索 • 転置インデックス検索方式 • 検索対象のドキュメントの索引(転置インデックス)を検索する • 多くの検索エンジンで採用される大量のドキュメントを高速に検索する手法 Solrは転置インデックス検索方式を採用
7.
転置インデックス作成(ドキュメント更新) の 1, 2,
3 は 1, 2, 3 カツオ 1, 3 サザエ 1, 2 ワカメ 2, 3 姉 2 弟 1 妹 3 1 カツオはサザエの弟 2 サザエはワカメの姉 3 ワカメはカツオの妹 検索対象のドキュメント 転置インデックス(索引) ドキュメントを単語に区切り ドキュメント番号で紐付け
8.
転置インデックスの検索 の 1, 2,
3 は 1, 2, 3 カツオ 1, 3 サザエ 1, 2 ワカメ 2, 3 姉 2 弟 1 妹 3 転置インデックス(索引) サザエ 検索ワード AND ワカメ 2 サザエはワカメの姉 ドキュメント2がヒット
9.
検索までの手順 • スキーマの定義 • 検索対象を調査して、フィールド毎にルールを決める •
インデックスの作成 • 転置インデックスを作成する
10.
ドキュメントと検索対象の調査 • 検索対象のドキュメントに対してどのような検索をするのか整理 項目 データ
どんな検索する? タイトル Apache Solr 入門 オープンソース全文検索エンジン 単語で検索 価格 3888 価格幅で検索 ページ 373 少ない順に結果を見る
11.
スキーマ定義 • フィールド単位でルールを作成 項目 どんな検索する?
フィールド名 フィールドタイプ タイトル 単語で検索 title text_ja 価格 価格幅で検索 price tint ページ数 少ない順に結果を見る page tint
12.
フィールドタイプ • 非テキスト系フィールド • 数値や単語分割の必要のないフィールド •
string 書籍コード等のコード化されるような文字列や短い固有名詞 • tint/tdouble 価格等の整数値や、浮動小数値 • tdate 日付 • etc… • テキスト系フィールド • 単語分割を行うフィールド • 日本語の文章等のキーワード検索に多用されるフィールド 一般的に利用されるフィールドタイプは準備されています
13.
テキスト系フィールドの単語分割 • text_ja の
単語分割 特に好きなApacheソーラーの本を買った オリジナル文章 特に 好き な Apache ソーラー の 本 を 買っ た ①日本語辞書でトークナイズ 特に 好き だ Apache ソーラー の 本 を 買う た ②形容詞を標準系に 特に 好き Apache ソーラー 本 買う ③助詞を削除 特に 好き Apache ソーラー 本 買う ④英字を半角、半角カナを全角に変換 好き Apache ソーラー 本 買う ⑤「特に」を削除 好き Apache ソーラ 本 買う ⑥「長音」を削除 好き apache ソーラ 本 買う ⑦アルファベットを小文字に変換 好き apache ソーラ 本 買う アナライズ完了!!
14.
単語分割をルール化するアナライザ • 日本語以外でも様々な言語に対応している • 文字列の最適化や表記揺れをカスタマイズすることが可能
15.
インデックスの作成 • JSON ファイルでのインデクシング例 項目
データ タイトル Apache Solr 入門 オープンソース全文検索エンジン 価格 3888 ページ 373 { “title”: ”Apache Solr 入門”, “price”: ”3888” “page”: ”373” } json-sample.json curl “http://localhost:8983/solr/solrbook/update?commit=true” –deta-binary @json-sample.json –H “Content-type/json; charset=utf-8”
16.
インデクシングの方法 • リクエスト • HTTP
リクエスト • SolrJ (Java client) • フォーマット • json形式、csv形式、xml形式 • その他 • データインポートハンドラによるRDBからのインポート • Tika による PDF ファイルからのデータ抽出とインデクシング
17.
検索条件の指定 • 条件 • title
が Solr • price が 1万円以下 • page が 少ない順 項目 どんな検索する? フィールド名 タイトル 単語で検索 title 価格 価格幅で検索 price ページ数 少ない順に結果を見る page q=title:Solr&fq=price:[* to 10000]&sort=page asc&start=0&rows=10&wt=json
18.
検索条件の指定 q=title:Solr&fq=price:[* to 10000]&sort=page
asc&start=0&rows=10&wt=json パラメータ 内容 説明 q title:Solr field : 値 又は 条件 等 fq price[* TO 10000] 同上 フィルター条件を指定 sort page asc field asc 又は desc で昇順/降順 複数指定可能 start 0 結果取得開始位置 rows 10 結果取得件数 wt json 結果形式
19.
検索の方法 • リクエスト • HTTP
リクエスト • SolrJ (Java client) • フォーマット • 標準形式 q=title:Solr&fq=price:[* TO 10000]&・・・ • JSON形式 {“query”:”title:Solr”,”filter”:[“price:[* TO 10000]”,・・・ • レスポンス形式 • JSON, XMLや各種言語で利用可能な形式(Java, Python, Php, Ruby, etc…)
20.
代表的な機能 • ハイライタ • 検索キーワードをハイライト表示 •
ファセット • ジャンルや価格のフィールドでの件数表示 • グルーピング • 同じ種類のドキュメントをまとめて並び替え • 空間検索 • 座標情報を利用した半径検索が可能 • Join • 親子関係を持つドキュメントの検索 (子を検索し、親のドキュメント情報を返却する)
21.
検索結果のランキング • キーワードにマッチするドキュメントを単純に、値段や発売日だけで並び替え ればそれで良いのか? • 検索結果がごちゃごちゃしていて分かりにくい •
検索キーワードに対するドキュメントの類似度を計算する • スコア計算
22.
スコア計算の一例 • 単語の重み付けによるスコア計算 • 単語のドキュメント内での出現頻度(tf) •
あるドキュメントの中に「Java」という単語が5回出現する • あるドキュメントの中に「Ruby」という単語が 1 回出現する • このドキュメントを特徴付けるのは「Java」 • 単語の全ドキュメント内での希少度(idf) • 「プログラミング」という単語は、1000 ドキュメントに出現する • 「オブジェクト指向」という単語は、2つのドキュメントにしか出現しない • このドキュメントを特徴づけるのは「オブジェクト指向」
23.
高アクセス&大規模ドキュメントへの対応 • レガシーなクラスタ • 分散インデックス •
分散検索 • レプリケーション • Solr Cloud
24.
分散インデックス Solr node1 Solr node2 Solr サーバ index index1 shards Index を2つに分けて小さくする index1 インデックスサイズを小さくすることができる
25.
分散検索 Solr node1 Solr node2 Web サーバ index1 shards index2 ①shards=node1,node2 で検索 ②node2 へ検索 ④node1とnode2の マージ結果を返す ③node1
へ結果返却 単語に紐づくドキュメント数を低減し、マッチングの処理コストを抑える
26.
レプリケーション Solr node2 Solr node3 Web サーバ Web サーバ Solr node1 Batch サーバ ①マスタへ更新マスタ スレーブ スレーブ ②スレーブへ複製 インデックスを冗長化して耐障害性が向上し、 検索と更新負荷を分離することができる(②スレーブへの複製は単語分割処理はしない)
27.
レガシーなクラスタ マスタ node 1-1 マスタ node 2-1 スレーブ node
1-2 スレーブ node 2-2 スレーブ node 1-3 スレーブ node 2-3 Batchサーバ Webサーバ Webサーバ shards shards レプリカを増やすことで 処理可能な検索リクエスト数 を増加 シャードを増やすことで ドキュメント数の増加に対応しスループット改善
28.
レガシーなクラスタの問題 マスタ node 1-1 マスタ node 2-1 スレーブ node
1-2 スレーブ node 2-2 スレーブ node 1-3 スレーブ node 2-3 Batchサーバ Webサーバ Webサーバ shards shards 障 害 障 害 障害が発生した場合に 検索/更新先を切り替えて、必要で あれば、再度更新により復旧させ る必要がある
29.
Solr Cloud node 1
node 2 node 3 node 4 Batchサーバ Webサーバ Webサーバ shardsshards リーダー リーダー 障害発生時には、更新先リーダの選 出及び切り替えが自動で行われる。 検索先については、クラスタ情報か ら正常な接続先を自動で取得する。
30.
まとめ • HTTPリクエストによる様々な言語からアクセスが可能 • データと検索要件に合わせてカスタマイズが容易 •
スコア計算を用いて検索キーワードとドキュメントの類似度による 検索結果のランキングが可能 • クラスタリング機能によりシステムの拡張が用意に行える
31.
ご静聴ありがとうございました!!
Download now