はじめての検索エンジン&solr 第13回solr勉強会
DESCRIPTION
第13回Solr勉強会資料 「はじめての検索エンジン&Solr」 検索エンジンの概要~Solrの活用まで (発表時の未公開スライドあり)TRANSCRIPT
![Page 1: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/1.jpg)
はじめての検索エンジン&Solr検索エンジンの概要~Solrの活用まで
第13回 Solr勉強会(2014/1/29)
N.Suzuki
![Page 2: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/2.jpg)
自己紹介
氏名:鈴木教嗣(スズキノリツグ)
所属:株式会社NTTデータCCS
著書:改訂新版 Apache Solr入門(技術評論社)
好評発売中!!今回はデジタル版あり!!
[監修]株式会社リクルートテクノロジーズ, 株式会社ロンウイット
[著]大谷 純, 阿部 慎一朗, 大須賀 稔, 北野 太郎, 平賀 一昭, 鈴木 教嗣
![Page 3: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/3.jpg)
検索エンジンの話
![Page 4: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/4.jpg)
検索エンジンとは?(その1)
検索エンジンの用途
どのようなところで使われているか?
Google Yahoo!
MSN
Webページを検索
ショッピング 宿検索
飲食店検索
サイト内を検索
図書館
Web系
Googleデスクトップ
Windowsサーチ メーラ
個人のPC内を検索社内のファイルを検索
プロジェクトの資料
社内の共通資料
![Page 5: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/5.jpg)
検索エンジンとは?(その2)
大量の文書データから特定の文書を探すツール
どのように探すか?
フリーワードで探す
カテゴリーで探す
日付や数値の範囲で探す
並べ替えて探す(安い順など)
検索するための多くの機能を持つ
![Page 6: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/6.jpg)
検索方式の話
主な検索方式
データの先頭から文字列が合致するか探す方式
索引を作成して、その索引から探す方式
順次検索
索引検索
索引:インデックスとも。Solrの場合は転置インデックスとも言う。 Chapter-1
![Page 7: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/7.jpg)
検索方式の話(順次検索)
1冊の本で例えるなら…
先頭ページから順に単語を探すイメージ
その単語があるか無いかわからないが、最終ページまで検索
使われているところ
テキストエディタやブラウザのページ内検索
Linuxであればgrepコマンド、RDBのLike検索など
特徴
事前準備不要で検索可能
ページ内や小数のファイルなど小規模に向いている
順次検索
![Page 8: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/8.jpg)
検索方式の話(索引検索)
1冊の本で例えるなら…
本の末尾にある索引から単語から目的ページを探すイメージ
仮に…索引にそのワードがなければ、「ヒットなし」となる。
特徴
事前に索引を作成する必要がある
大規模にも対応し、検索速度が速い
索引検索 索引・Index
多くの検索エンジンがこの方式を採用
Solrも索引を使用する検索方式
![Page 9: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/9.jpg)
検索エンジンの基本
転置インデックスについて
文章を特定の単位で区切ってインデックスのキーとし、それに紐づく文書番号を保持したもの。
日本の首都は東京です
日本 の です
Doc-1
東京の天気は晴れですDoc-2
首都 は 東京
東京 の です天気 は 晴れ
単語 文書番号
日本 1
首都 1
東京 1,2
天気 2
晴れ 2
です 1,2
の 1,2
は 1,2
![Page 10: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/10.jpg)
検索エンジンの基本
転置インデックスから探す
転置インデックスを使って「首都」を検索してみる。
日本の首都は東京です
東京の天気は晴れです
Doc-1
Doc-2
単語 文書番号
日本 1
首都 1
東京 1,2
天気 2
晴れ 2
です 1,2
の 1,2
は 1,2 この方式なら検索も速そう…。
![Page 11: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/11.jpg)
検索エンジンの基本
柔軟かつ高速なフリーワード検索
大量データに対する検索が高速なのは
転置インデックス
のおかげ!
![Page 12: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/12.jpg)
Apache Solrの話
![Page 13: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/13.jpg)
Apache Solrとは
Solr = ソーラーと読む
全文検索エンジンサーバアプリケーション
JettyやTomcatなどで動作
2007.1 Apache projectのトップレベルプロジェクトに
現在はApache Lucene(ルシーン)のサブプロジェクト
Lucene=検索エンジンライブラリ(Solrのコアライブラリであり、elasticsearchも使用)
Solr(Lucene)のコミュニティ
コミュニティが活発であり、不具合への対応も早い
新機能への取り組みも盛ん
Chapter-1
![Page 14: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/14.jpg)
Solrの特徴
Full Javaで書かれているオープンソース
無償で利用可能であり、ソースも公開されている
容易に検索サーバが構築可能
数コマンドで検索サーバを利用できる
小規模から大規模まで対応
更に複数のスケールする機能・手法が利用できる
豊富な検索機能のサポート
高速化を可能にするキャッシュ機構
日本語にも対応したトークナイザやフィルタ
Chapter-1
![Page 15: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/15.jpg)
Solrの検索までの流れ
Indexの作成から検索まで
DB
データソース Solrサーバ フロントアプリ
Solr Index
Webサーバ
ユーザー各種ドキュメント
既存データ
Webクロール
Indexの作成
検索クエリ
結果
バッチサーバ
Indexを作ることを、インデクシング、フィードなどと言う。
![Page 16: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/16.jpg)
Solrの機能紹介
検索
検索クエリ
スコアによるソート
スコアリングについて
多言語に対応した柔軟な検索
ファセット検索(Facet)/緯度経度検索(Spatial)
ハイライト機能/グルーピング機能
スケールアウト
インデックスの複製:replication
分散横断検索:distributed
分散検索:Solr Cloud
Chapter-4,7,8
![Page 17: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/17.jpg)
Solrの検索クエリ
Solrの検索方法
Solr用の検索式(クエリ)を使用します。
例えば…賃貸物件を探す。
説明文(note)に「築浅」を含み、かつ、家賃(price)が8万以下の物件を延べ床面積(space)が広い順に20件表示
q=note:築浅 AND price:[*TO 80000]&sort=space desc&rows=20
q=
sort=
rows=
検索条件を の形式で指定
フィールド名 (スペース) asc / desc
フィールド名 : 検索ワード
ソート条件
1ページに表示させる件数を整数で指定
Chapter-4
![Page 18: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/18.jpg)
Solrの機能紹介(スコア)
スコアによるソート
スコア=検索条件の一致度の指数
検索条件によりマッチしたドキュメントが高スコア
Solrのスコアを算出する計算式
デフォルトではLuceneのスコア計算式
tf-idfのベクトルモデル
qint
2t,dNormt.getBoosttidfdinttfqqueryNormq,dcoordq,dscore
単語ヒット数 出現数 希少度
![Page 19: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/19.jpg)
Solrの機能紹介(スコア)
単語ヒット数(coord)
検索したワードが幾つヒットしたか
例:OR検索した時などに影響「ジャガイモ ORベーコン ORタマネギ」で検索
「材料:ジャガイモ、ニンジン、豚肉」
「材料:ナス、鶏ひき肉、ピーマン、タマネギ」
「材料:ベーコン、キャベツ、タマネギ」 高スコア
ジャガイモ ・・・1個
タマネギ ・・・1個
ベーコン タマネギ ・・・2個
![Page 20: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/20.jpg)
Solrの機能紹介(スコア)
出現数(tf)
1フィールドにそのワードが何個あるか
例:「Solr」で検索
「Solrを使ってみよう」
「SolrのSolrによるSolrのための検索」
「Solrって何?~検索エンジンSolr~」
Solr ・・・1回
Solr Solr Solr ・・・3回
Solr Solr ・・・2回
高スコア
![Page 21: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/21.jpg)
Solrの機能紹介(スコア)
希少度(idf)
そのワードがどのくらい稀少か(Solrでは価値がある)
例:「ジャガイモ ORタマネギ」で検索
「材料:ジャガイモ、ニンジン、豚肉」
「材料:ナス、鶏ひき肉、ピーマン、タマネギ」
「材料:ベーコン、キャベツ、タマネギ」
各ワードのドキュメント数を比較
ジャガイモ・・・1ドキュメント
タマネギ・・・2ドキュメント
高スコア
ジャガイモの方が希少
ジャガイモ
タマネギ
タマネギ
![Page 22: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/22.jpg)
Solrの機能紹介(スコア)
Solrのスコア
単語のヒット数、出現頻度、希少度の他、フィールドの長さ(割合)、ブーストなどの要素を加味してスコアリングを行っている
通常の検索で、ソート条件を指定していないときや、「sort=score desc」を指定するとスコアでソート可能
fl=*,score とすることで、スコアの表示も可能
OSSなのでスコアの部分も自己流に改造も可能
![Page 23: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/23.jpg)
検索エンジンの基本
柔軟かつ高速なフリーワード検索
大量データに対する検索が高速なのは
転置インデックス
のおかげ!
柔軟な検索が行えるのは
トークナイザと各種フィルタ
のおかげ!
![Page 24: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/24.jpg)
多言語対応と柔軟な検索
トークナイザと言語フィルタの充実
数十か国もの言語をサポート
example内にも多数の定義あり
特に…
日本語用のフィルタも多数あり、Solr3.6より標準で「形態素解析」が利用できるようになった
Kuromojiの辞書も内包
Chapter-2形態素解析:日本語の文章を単語(各品詞)に切り分ける処理。多くは辞書を用いて行う。
![Page 25: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/25.jpg)
トークナイザとフィルタ
トークナイザ
日本語用:JapaneseTokenizerFactory
ホワイトスペース用:WhitespaceTokenizerFactory
N-Gram:NGramTokenizerFactory
フィルタ
文字フィルタ:MappingCharFilterFactory
品詞フィルタ:JapanesePartOfSpeechStopFilterFactory
禁止ワード:StopFilterFactory
大文字小文字:LowerCaseFilterFactory
Chapter-2
![Page 26: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/26.jpg)
フィルタ紹介
文字フィルタ:MappingCharFilterFactory
トークナイズする前に文字を置き替えるフィルタ
例:「タ ゙」(半角は濁点も1文字)
「タ ゙」を「ダ」と置き替えることが可能
例:「斎」「齊」「齋」を「斉」の
に、「髙」を「高」に置き換える。
「斎藤さん」を「斉藤さん」でも探せる
「髙橋さん」を「高橋さん」でも探せる
意外と便利です
![Page 27: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/27.jpg)
検索機能紹介
ファセット(facet)
ドリルダウン検索を実現するための機能
検索フォーム 検索
商品A+説明
商品B+説明
商品C+説明
商品D+説明
衣料(84)DIY(20)ギフト(12)家電(8)ゲーム(4)その他(2)
コレ
文書をカテゴリで絞り込むのに有効
カテゴリはジャンル、地域、金額など様々Chapter-4
![Page 28: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/28.jpg)
検索機能紹介
ハイライタ(highlight)
検索ワードの書式を変えるための機能
Solr 検索
3件ヒットしました
1:改訂新版Apache Solr入門2:Apache Solr入門
3:Apache Solr 4 Cookbook
コレ
Chapter-4
検索したワードを目立たせる
![Page 29: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/29.jpg)
Solrの運用・スケールについて
![Page 30: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/30.jpg)
Solrのスケール
検索システムを構築する際に規模の見積りは重要
運用中のSolrが直面する課題…
利用するユーザー数が増えた(QPSの増加)
検索対象となるドキュメントが増えた
検索クエリが複雑になった
クエリのレスポンスが遅くなるなど検索性能の低下
QPS:Query par Secondの略。1秒間に何クエリ処理できるかという性能指数のひとつ
![Page 31: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/31.jpg)
検索性能低下の対策
クエリ改善
クエリチューニングが可能か調査する
スケールアップ
単純にSolrサーバを高性能化
CPUパワーアップ、メモリ増設、HDD高速化など
アプリの改修を行うことなく性能向上
スケールアウト
Solrはスケールアウトするための複数の機能を持つ
replication:インデックスの複製機能
distributed/Solr Cloud:分散検索機能
Chapter-8,9
![Page 32: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/32.jpg)
Solrの活用・導入について
![Page 33: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/33.jpg)
Solrの活用
どのようなところで活用できるか?(一例)
DBサーバの負荷軽減
検索システムのリプレース
新たなサービスへの利用
既存データの活用
アイディア次第で様々な利用が可能
![Page 34: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/34.jpg)
データベースとの比較
大量のデータ(レコード)から特定のデータを探すという意味では、データベースも同じでは?
RDBと検索エンジンとの主な違い
RDB 検索エンジン
柔軟かつ高速なフリーワード検索
△ ◎
データの形式 正規化 非正規化
リアルタイム性 ◎ ○
トランザクション管理 ◎ ×
一致度によるソート △ ◎
検索式 SQL 専用クエリ
知名度 ◎ ○
![Page 35: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/35.jpg)
Solrの活用
DBサーバの負荷軽減
複雑な検索も増えた上に、アクセスも増加している
フリーワードをLike検索していたが、そろそろ限界
条件検索&一覧表示だけでもSolrを使ってみる
検索フォーム 検索
商品A+説明
商品B+説明
商品C+説明
商品D+説明
詳細
詳細
詳細
詳細
商品A
詳細説明
Solrから取得した「商品A」のコード値をDBで引くだけ検索→一覧表示までをSolrで作成
![Page 36: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/36.jpg)
Solrの活用
DBサーバの補助機能として使う場合の注意
Solrはトランザクション管理ができない
在庫管理・・・×
複数のユーザが更新する・・・×
リアルタイム性が低い
索引を作成→検索可能となるため、タイムラグが発生する
要件次第でラグを最小にすることは可能だが、RDBのような使い方は不得意
データベースとのデータの整合性やお互いの機能の利点を活かす使い方が重要
検索エンジン特有の知識が必要
![Page 37: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/37.jpg)
Solrの活用
検索システムのリプレース
現行システムにも検索エンジンを使用している場合
• 現在の検索エンジンではスペック不足• ライセンス料金が高い• 実現したい機能が利用できない
Solrの利用も視野に入れてみる!
• スケールアウトが考慮されている• OSSなのでライセンス料不要• 機能が多い&必要であれば自分で機能追加ができるSolrならば…
![Page 38: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/38.jpg)
Solrの活用
新たなサービスへの利用
現行のサイトにフリーワードの検索機能が無い
検索機能を付与してみる。
現行システムの検索を強化する
DBを使った社内システムだが、キーワードにマッチせず、検索結果がゼロ件になることが多々あった。
検索エンジンの導入により、柔軟なフリーワードを実現
電話対応用のシステムだが、過去事例の検索に10秒くらい時間がかかっていた。
検索エンジン導入により、レスポンスが1秒以下に!
顧客満足度が向上
業務効率の向上&顧客満足度も向上
![Page 39: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/39.jpg)
Solrの活用
既存データの活用
分析ツールとして活用してみる
強力な形態素解析機を活用して、データを集計
捨てていたログを検索機能を使って分析してみる
「検索エンジン」を使うことで新たな気付きがあるかも知れない
![Page 40: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/40.jpg)
ひとこと
Apache ProjectなのでOSSの中でも信頼性が高く、国内外で実績も多くあります。
顧客がOSSを心配することもあるかもしれませんが…
コミュニティが活発なのは強み!
Solrは検索エンジンが初めての人でも導入しやすい
改訂新版 Apache Solr入門もあります!
身近にサポートしてくれる人も??(勉強会も開催)
これを機に、またSolrを盛り上げましょう!!
![Page 41: はじめての検索エンジン&Solr 第13回Solr勉強会](https://reader037.vdocuments.site/reader037/viewer/2022100309/55661712d8b42a7d608b4a93/html5/thumbnails/41.jpg)
ご清聴ありがとうございました
こちらもよろしくお願いいたします!