SlideShare a Scribd company logo
はじめての
検索エンジン&Solr
検索エンジンの概要~Solrの活用まで
第13回 Solr勉強会(2014/1/29)

N.Suzuki
自己紹介
 氏名:鈴木 教嗣(スズキ ノリツグ)
 所属:株式会社NTTデータCCS
 著書:改訂新版 Apache Solr入門(技術評論社)
[著]大谷 純, 阿部 慎一朗, 大須賀 稔, 北野 太郎, 平賀 一昭, 鈴木 教嗣
[監修] 株式会社リクルートテクノロジーズ, 株式会社ロンウイット

好評発売中!!
今回はデジタル版あり!!
検索エンジンの話
検索エンジンとは?(その1)
 検索エンジンの用途
 どのようなところで使われているか?
Google

ショッピング

MSN
Webページを検索

プロジェクトの資料
社内の共通資料
社内のファイルを検索

Web系

宿検索

飲食店検索

Yahoo!

図書館

サイト内を検索

Googleデスクトップ
Windowsサーチ

メーラ

個人のPC内を検索
検索エンジンとは?(その2)
 大量の文書データから特定の文書を探すツール
 どのように探すか?

フリーワードで探す
カテゴリーで探す
日付や数値の範囲で探す
並べ替えて探す(安い順など)

検索するための多くの機能を持つ
検索方式の話
 主な検索方式

順次検索
 データの先頭から文字列が合致するか探す方式

索引検索
 索引を作成して、その索引から探す方式

索引:インデックスとも。Solrの場合は転置インデックスとも言う。

Chapter-1
検索方式の話(順次検索)
順次検索
 1冊の本で例えるなら…
 先頭ページから順に単語を探すイメージ
 その単語があるか無いかわからないが、最終ページまで検索

 使われているところ
 テキストエディタやブラウザのページ内検索
 Linuxであればgrepコマンド、RDBのLike検索など

 特徴
 事前準備不要で検索可能
 ページ内や小数のファイルなど小規模に向いている
検索方式の話(索引検索)
索引検索

索引・Index

 1冊の本で例えるなら…
 本の末尾にある索引から単語から目的ページを探すイメージ
 仮に…索引にそのワードがなければ、「ヒットなし」となる。

 特徴
 事前に索引を作成する必要がある
 大規模にも対応し、検索速度が速い

多くの検索エンジンがこの方式を採用
Solrも索引を使用する検索方式
検索エンジンの基本
 転置インデックスについて
 文章を特定の単位で区切ってインデックスのキーとし、
それに紐づく文書番号を保持したもの。

の

首都

は

です

東京の天気は晴れです
東京

の

天気

は

晴れ

です

1

首都

1
1,2

天気

東京

文書番号

日本

日本の首都は東京です
日本

Doc-2

単語

東京

Doc-1

2

晴れ

2

です

1,2

の

1,2

は

1,2
検索エンジンの基本
 転置インデックスから探す
 転置インデックスを使って「首都」を検索してみる。
単語

文書番号

日本

1

首都

1

東京

1,2

天気

2

晴れ

2

です

1,2

の

1,2

は

1,2

Doc-1

日本の首都は東京です

Doc-2

東京の天気は晴れです

この方式なら
検索も速そう…。
検索エンジンの基本
 柔軟かつ高速なフリーワード検索
大量データに対する検索が高速なのは

転置インデックス
のおかげ!
Apache Solrの話
Apache Solrとは
 Solr = ソーラーと読む
 全文検索エンジンサーバアプリケーション
 JettyやTomcatなどで動作

 2007.1 Apache projectのトップレベルプロジェクトに
 現在はApache Lucene(ルシーン)のサブプロジェクト
 Lucene=検索エンジンライブラリ
(Solrのコアライブラリであり、elasticsearchも使用)

 Solr(Lucene)のコミュニティ
 コミュニティが活発であり、不具合への対応も早い
 新機能への取り組みも盛ん

Chapter-1
Solrの特徴
 Full Javaで書かれているオープンソース
 無償で利用可能であり、ソースも公開されている

 容易に検索サーバが構築可能
 数コマンドで検索サーバを利用できる

 小規模から大規模まで対応
 更に複数のスケールする機能・手法が利用できる

 豊富な検索機能のサポート
 高速化を可能にするキャッシュ機構
 日本語にも対応したトークナイザやフィルタ

Chapter-1
Solrの検索までの流れ
 Indexの作成から検索まで
データソース

DB

Webクロール

フロントアプリ

Solrサーバ

既存データ

検索
クエリ

Webサーバ

結果

Index
の
作成

Solr Index

各種ドキュメント
Indexを作ることを、インデクシング、フィードなどと言う。

バッチサーバ

ユーザー
Solrの機能紹介
 検索
 検索クエリ
 スコアによるソート
 スコアリングについて

 多言語に対応した柔軟な検索
 ファセット検索(Facet)/ 緯度経度検索(Spatial)

 ハイライト機能 / グルーピング機能

 スケールアウト
 インデックスの複製:replication

 分散横断検索:distributed
 分散検索:Solr Cloud
Chapter-4,7,8
Solrの検索クエリ
 Solrの検索方法
 Solr用の検索式(クエリ)を使用します。
検索条件を フィールド名

q=
sort=
rows=

ソート条件

:

検索ワード

フィールド名

(スペース)

の形式で指定
asc / desc

1ページに表示させる件数を整数で指定

 例えば…賃貸物件を探す。
 説明文(note)に「築浅」を含み、かつ、家賃(price)が8万以下の
物件を延べ床面積(space)が広い順に20件表示

q=note:築浅 AND price:[*TO 80000]
&sort=space desc
&rows=20
Chapter-4
Solrの機能紹介(スコア)
 スコアによるソート
 スコア=検索条件の一致度の指数
 検索条件によりマッチしたドキュメントが高スコア

 Solrのスコアを算出する計算式
 デフォルトではLuceneのスコア計算式
 tf-idf のベクトルモデル





scoreq,d   coord q,d   queryNormq    tf t in d   idf t   t.getBoost   Normt,d 
2

t in q

単語ヒット数

出現数

希少度
Solrの機能紹介(スコア)
 単語ヒット数(coord)
 検索したワードが幾つヒットしたか
 例:OR検索した時などに影響
「ジャガイモ OR ベーコン OR タマネギ」で検索
ジャガイモ
 「材料:ジャガイモ、ニンジン、豚肉」・・・1個
タマネギ
 「材料:ナス、鶏ひき肉、ピーマン、タマネギ」・・・1個
ベーコン
タマネギ
 「材料:ベーコン、キャベツ、タマネギ」・・・2個

高スコア
Solrの機能紹介(スコア)
 出現数(tf)
 1フィールドにそのワードが何個あるか
 例:「Solr」で検索
Solr
 「Solrを使ってみよう」・・・1回
Solr Solr
Solr
 「SolrのSolrによるSolrのための検索」 ・・・3回
Solr
Solr
 「Solrって何?~検索エンジンSolr~」 ・・・2回

高スコア
Solrの機能紹介(スコア)
 希少度(idf)
 そのワードがどのくらい稀少か(Solrでは価値がある)
 例:「ジャガイモ OR タマネギ」で検索
ジャガイモ
 「材料:ジャガイモ、ニンジン、豚肉」 高スコア
タマネギ
 「材料:ナス、鶏ひき肉、ピーマン、タマネギ」

タマネギ
 「材料:ベーコン、キャベツ、タマネギ」

 各ワードのドキュメント数を比較
 ジャガイモ・・・1ドキュメント
 タマネギ・・・2ドキュメント

ジャガイモの方が希少
Solrの機能紹介(スコア)
 Solrのスコア
 単語のヒット数、出現頻度、希少度の他、
フィールドの長さ(割合)、ブーストなどの要素を加味し
てスコアリングを行っている
 通常の検索で、ソート条件を指定していないときや、
「sort=score desc」を指定するとスコアでソート可能
 fl=*,score とすることで、スコアの表示も可能

 OSSなのでスコアの部分も自己流に改造も可能
検索エンジンの基本
 柔軟かつ高速なフリーワード検索
大量データに対する検索が高速なのは

転置インデックス
のおかげ!

柔軟な検索が行えるのは

トークナイザと各種フィルタ
のおかげ!
多言語対応と柔軟な検索
 トークナイザと言語フィルタの充実
 数十か国もの言語をサポート
 example内にも多数の定義あり

 特に…
 日本語用のフィルタも多数あり、Solr3.6より標準で
「形態素解析」が利用できるようになった
 Kuromojiの辞書も内包

形態素解析:日本語の文章を単語(各品詞)に切り分ける処理。多くは辞書を用いて行う。

Chapter-2
トークナイザとフィルタ
 トークナイザ
 日本語用:JapaneseTokenizerFactory
 ホワイトスペース用:WhitespaceTokenizerFactory

 N-Gram:NGramTokenizerFactory

 フィルタ
 文字フィルタ:MappingCharFilterFactory
 品詞フィルタ:JapanesePartOfSpeechStopFilterFactory
 禁止ワード:StopFilterFactory

 大文字小文字:LowerCaseFilterFactory
Chapter-2
フィルタ紹介
 文字フィルタ:MappingCharFilterFactory
 トークナイズする前に文字を置き替えるフィルタ

「タ ゙」(半角は濁点も1文字)
「タ ゙」を「ダ」と置き替えることが可能
 例:「斎」「齊」「齋」を「斉」の
に、「髙」を「高」に置き換える。
 「斎藤さん」を「斉藤さん」でも探せる
 「髙橋さん」を「高橋さん」でも探せる
 例:

意外と便利です
検索機能紹介
 ファセット(facet)
 ドリルダウン検索を実現するための機能
検索フォーム

検索
商品A+説明

衣料(84)
DIY(20)
ギフト(12)
家電(8)
ゲーム(4)
その他(2)

商品B+説明
商品C+説明
商品D+説明

コレ
文書をカテゴリで絞り込むのに有効
カテゴリはジャンル、地域、金額など様々

Chapter-4
検索機能紹介
 ハイライタ(highlight)
 検索ワードの書式を変えるための機能
検索

Solr
3件ヒットしました

1:改訂新版Apache Solr入門
2:Apache Solr入門
3:Apache Solr 4 Cookbook

コレ
検索したワードを目立たせる
Chapter-4
Solrの運用・スケールについて
Solrのスケール
 検索システムを構築する際に規模の見積りは重要
 運用中のSolrが直面する課題…
 利用するユーザー数が増えた(QPSの増加)

 検索対象となるドキュメントが増えた
 検索クエリが複雑になった

クエリのレスポンスが遅くなるなど
検索性能の低下

QPS:Query par Secondの略。1秒間に何クエリ処理できるかという性能指数のひとつ
検索性能低下の対策
 クエリ改善
 クエリチューニングが可能か調査する

 スケールアップ
 単純にSolrサーバを高性能化
 CPUパワーアップ、メモリ増設、HDD高速化など
 アプリの改修を行うことなく性能向上

 スケールアウト
 Solrはスケールアウトするための複数の機能を持つ
 replication:インデックスの複製機能
 distributed/Solr Cloud:分散検索機能

Chapter-8,9
Solrの活用・導入について
Solrの活用
 どのようなところで活用できるか?(一例)
DBサーバの負荷軽減

検索システムのリプレース
新たなサービスへの利用
既存データの活用

アイディア次第で様々な利用が可能
データベースとの比較
 大量のデータ(レコード)から特定のデータを探すと
いう意味では、データベースも同じでは?
 RDBと検索エンジンとの主な違い
RDB

検索エンジン

柔軟かつ高速な
フリーワード検索

△

◎

データの形式

正規化

非正規化

リアルタイム性

◎

○

トランザクション管理

◎

×

一致度によるソート

△

◎

検索式

SQL

専用クエリ

知名度

◎

○
Solrの活用
 DBサーバの負荷軽減
 複雑な検索も増えた上に、アクセスも増加している
 フリーワードをLike検索していたが、そろそろ限界

条件検索&一覧表示だけでもSolrを使ってみる

検索フォーム

検索

商品A

商品A+説明

詳細

商品B+説明

詳細

商品C+説明

詳細

商品D+説明

詳細

詳細説明

検索→一覧表示までをSolrで作成

Solrから取得した「商品A」のコード値をDBで引くだけ
Solrの活用
 DBサーバの補助機能として使う場合の注意
 Solrはトランザクション管理ができない
 在庫管理・・・×
 複数のユーザが更新する・・・×

 リアルタイム性が低い
 索引を作成→検索可能 となるため、タイムラグが発生する
 要件次第でラグを最小にすることは可能だが、RDBのような使
い方は不得意

データベースとのデータの整合性や
お互いの機能の利点を活かす使い方が重要
検索エンジン特有の知識が必要
Solrの活用
 検索システムのリプレース
 現行システムにも検索エンジンを使用している場合

Solrの利用も視野に入れてみる!
• 現在の検索エンジンではスペック不足
• ライセンス料金が高い
• 実現したい機能が利用できない

Solrならば…

• スケールアウトが考慮されている
• OSSなのでライセンス料不要
• 機能が多い&必要であれば自分で
機能追加ができる
Solrの活用
 新たなサービスへの利用
 現行のサイトにフリーワードの検索機能が無い
 検索機能を付与してみる。

顧客満足度が向上

 現行システムの検索を強化する
 DBを使った社内システムだが、キーワードにマッチせず、検索
結果がゼロ件になることが多々あった。
 検索エンジンの導入により、柔軟なフリーワードを実現

 電話対応用のシステムだが、過去事例の検索に10秒くらい時間
がかかっていた。
 検索エンジン導入により、レスポンスが1秒以下に!

業務効率の向上&顧客満足度も向上
Solrの活用
 既存データの活用
 分析ツールとして活用してみる
 強力な形態素解析機を活用して、データを集計
 捨てていたログを検索機能を使って分析してみる

「検索エンジン」を使うことで
新たな気付きがあるかも知れない
ひとこと
 Apache Project なのでOSSの中でも信頼性が高く、国
内外で実績も多くあります。
 顧客がOSSを心配することもあるかもしれませんが…

 コミュニティが活発なのは強み!

 Solrは検索エンジンが初めての人でも導入しやすい
 改訂新版 Apache Solr入門 もあります!

 身近にサポートしてくれる人も??(勉強会も開催)

これを機に、またSolrを盛り上げましょう!!
ご清聴ありがとうございました

こちらもよろしく
お願いいたします!

More Related Content

PPTX
Apache Solr 入門
PDF
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
PDF
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PPTX
LIFULL HOME'SでのSolrの構成と運用の変遷
PDF
Apache Solr 検索エンジン入門
PDF
JSRとJEPとJBSの見方や調べ方について
PDF
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Apache Solr 入門
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
LIFULL HOME'SでのSolrの構成と運用の変遷
Apache Solr 検索エンジン入門
JSRとJEPとJBSの見方や調べ方について
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP

What's hot (20)

PDF
SolrとElasticsearchを比べてみよう
PDF
Apache NiFi の紹介 #streamctjp
PPTX
さくっと理解するSpring bootの仕組み
PDF
とある診断員とAWS
PDF
Elasticsearchのサジェスト機能を使った話
PDF
AWSの課金体系
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
Amazon S3を中心とするデータ分析のベストプラクティス
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PDF
Docker入門 - 基礎編 いまから始めるDocker管理
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PDF
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
PDF
What's new in Spring Boot 2.6 ?
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
社内ドキュメント検索システム構築のノウハウ
PDF
「仮想マシンからの移⾏先としてPaaSとKaaS、どちらを選ぶか? #ヤフー名古屋」
PDF
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
PPTX
Azure Search 大全
SolrとElasticsearchを比べてみよう
Apache NiFi の紹介 #streamctjp
さくっと理解するSpring bootの仕組み
とある診断員とAWS
Elasticsearchのサジェスト機能を使った話
AWSの課金体系
Apache Arrow - データ処理ツールの次世代プラットフォーム
インフラエンジニアの綺麗で優しい手順書の書き方
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
Amazon S3を中心とするデータ分析のベストプラクティス
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Docker入門 - 基礎編 いまから始めるDocker管理
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
[Observability conference 2022/3/11] NewsPicks のプロダクト開発エンジニアが実践するスキルとしての SRE
What's new in Spring Boot 2.6 ?
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
社内ドキュメント検索システム構築のノウハウ
「仮想マシンからの移⾏先としてPaaSとKaaS、どちらを選ぶか? #ヤフー名古屋」
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
Azure Search 大全
Ad

Similar to はじめての検索エンジン&Solr 第13回Solr勉強会 (20)

ODP
pixiv サイバーエージェント共同勉強会 solr導入記
PPTX
技術勉強会(Solr入門編)
PDF
全文検索入門
PPTX
solr勉強会資料
PDF
Solr勉強会第10回
PDF
オープンソースソフトウェア検索サーバ Solr入門
PDF
オープンソースソフトウェア検索サーバ Solr入門
PPTX
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
PDF
第15回Solr勉強会 - Solr at Yahoo! JAPAN #SolrJP
PPTX
Lucene/Solr Revolution 2016 参加レポート
PPT
アメーバサーチ 第二回solr勉強会
PPTX
SunspotではじめるSolr入門
PPT
Solr@twitter検索
PDF
Lucene gosenの紹介 solr勉強会第7回
PDF
2018/07/19 第21回Solr勉強会発表資料
PDF
Lucene/Solr Revolution2015参加レポート
PPTX
CROSS 2015 全文検索群雄割拠
PDF
PDF
eZ Publish勉強会5月「eZ Find」
PPTX
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
pixiv サイバーエージェント共同勉強会 solr導入記
技術勉強会(Solr入門編)
全文検索入門
solr勉強会資料
Solr勉強会第10回
オープンソースソフトウェア検索サーバ Solr入門
オープンソースソフトウェア検索サーバ Solr入門
Solr の LTR プラグインの使い方 - 第3回 LTR 勉強会資料 -
第15回Solr勉強会 - Solr at Yahoo! JAPAN #SolrJP
Lucene/Solr Revolution 2016 参加レポート
アメーバサーチ 第二回solr勉強会
SunspotではじめるSolr入門
Solr@twitter検索
Lucene gosenの紹介 solr勉強会第7回
2018/07/19 第21回Solr勉強会発表資料
Lucene/Solr Revolution2015参加レポート
CROSS 2015 全文検索群雄割拠
eZ Publish勉強会5月「eZ Find」
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Ad

Recently uploaded (9)

PPTX
「AI×仕事の進め方」研修資料.pptx RIZAPビジネスイノベーション株式会社
PPTX
株式会社フライク_______採用ピッチ資料_____update20250801
PDF
【QYResearch】世界製薬業界の市場変革と将来展望における多角的な事業展開の探求
PDF
Syslabo_Company Guide_for saleshub_20250808
PDF
Fellowship Co.,Ltd. Company Overview for Students
PDF
AI活用の成果が変わる!生成AI時代の速読・読解力トレーニング「AI Reading Lab」
PDF
自動鉱山スキャナー、グローバルトップ11企業のランキングと市場シェア2025~2031年.pdf
PDF
西都 採用サイト掲載用ピッチ資料 | 安心して働ける環境と成長できるキャリアパス
PPTX
Document from Suhani (2).pptx on the following topic
「AI×仕事の進め方」研修資料.pptx RIZAPビジネスイノベーション株式会社
株式会社フライク_______採用ピッチ資料_____update20250801
【QYResearch】世界製薬業界の市場変革と将来展望における多角的な事業展開の探求
Syslabo_Company Guide_for saleshub_20250808
Fellowship Co.,Ltd. Company Overview for Students
AI活用の成果が変わる!生成AI時代の速読・読解力トレーニング「AI Reading Lab」
自動鉱山スキャナー、グローバルトップ11企業のランキングと市場シェア2025~2031年.pdf
西都 採用サイト掲載用ピッチ資料 | 安心して働ける環境と成長できるキャリアパス
Document from Suhani (2).pptx on the following topic

はじめての検索エンジン&Solr 第13回Solr勉強会