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

41

Click here to load reader

Upload: noritsugu-suzuki

Post on 28-May-2015

8.798 views

Category:

Business


7 download

DESCRIPTION

第13回Solr勉強会資料 「はじめての検索エンジン&Solr」 検索エンジンの概要~Solrの活用まで (発表時の未公開スライドあり)

TRANSCRIPT

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

はじめての検索エンジン&Solr検索エンジンの概要~Solrの活用まで

第13回 Solr勉強会(2014/1/29)

N.Suzuki

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

自己紹介

氏名:鈴木教嗣(スズキノリツグ)

所属:株式会社NTTデータCCS

著書:改訂新版 Apache Solr入門(技術評論社)

好評発売中!!今回はデジタル版あり!!

[監修]株式会社リクルートテクノロジーズ, 株式会社ロンウイット

[著]大谷 純, 阿部 慎一朗, 大須賀 稔, 北野 太郎, 平賀 一昭, 鈴木 教嗣

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

検索エンジンの話

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

検索エンジンとは?(その1)

検索エンジンの用途

どのようなところで使われているか?

Google Yahoo!

MSN

Webページを検索

ショッピング 宿検索

飲食店検索

サイト内を検索

図書館

Web系

Googleデスクトップ

Windowsサーチ メーラ

個人のPC内を検索社内のファイルを検索

プロジェクトの資料

社内の共通資料

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

検索エンジンとは?(その2)

大量の文書データから特定の文書を探すツール

どのように探すか?

フリーワードで探す

カテゴリーで探す

日付や数値の範囲で探す

並べ替えて探す(安い順など)

検索するための多くの機能を持つ

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

検索方式の話

主な検索方式

データの先頭から文字列が合致するか探す方式

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

順次検索

索引検索

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

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

検索方式の話(順次検索)

1冊の本で例えるなら…

先頭ページから順に単語を探すイメージ

その単語があるか無いかわからないが、最終ページまで検索

使われているところ

テキストエディタやブラウザのページ内検索

Linuxであればgrepコマンド、RDBのLike検索など

特徴

事前準備不要で検索可能

ページ内や小数のファイルなど小規模に向いている

順次検索

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

検索方式の話(索引検索)

1冊の本で例えるなら…

本の末尾にある索引から単語から目的ページを探すイメージ

仮に…索引にそのワードがなければ、「ヒットなし」となる。

特徴

事前に索引を作成する必要がある

大規模にも対応し、検索速度が速い

索引検索 索引・Index

多くの検索エンジンがこの方式を採用

Solrも索引を使用する検索方式

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

検索エンジンの基本

転置インデックスについて

文章を特定の単位で区切ってインデックスのキーとし、それに紐づく文書番号を保持したもの。

日本の首都は東京です

日本 の です

Doc-1

東京の天気は晴れですDoc-2

首都 は 東京

東京 の です天気 は 晴れ

単語 文書番号

日本 1

首都 1

東京 1,2

天気 2

晴れ 2

です 1,2

の 1,2

は 1,2

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

検索エンジンの基本

転置インデックスから探す

転置インデックスを使って「首都」を検索してみる。

日本の首都は東京です

東京の天気は晴れです

Doc-1

Doc-2

単語 文書番号

日本 1

首都 1

東京 1,2

天気 2

晴れ 2

です 1,2

の 1,2

は 1,2 この方式なら検索も速そう…。

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

検索エンジンの基本

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

大量データに対する検索が高速なのは

転置インデックス

のおかげ!

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

Apache Solrの話

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

Apache Solrとは

Solr = ソーラーと読む

全文検索エンジンサーバアプリケーション

JettyやTomcatなどで動作

2007.1 Apache projectのトップレベルプロジェクトに

現在はApache Lucene(ルシーン)のサブプロジェクト

Lucene=検索エンジンライブラリ(Solrのコアライブラリであり、elasticsearchも使用)

Solr(Lucene)のコミュニティ

コミュニティが活発であり、不具合への対応も早い

新機能への取り組みも盛ん

Chapter-1

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

Solrの特徴

Full Javaで書かれているオープンソース

無償で利用可能であり、ソースも公開されている

容易に検索サーバが構築可能

数コマンドで検索サーバを利用できる

小規模から大規模まで対応

更に複数のスケールする機能・手法が利用できる

豊富な検索機能のサポート

高速化を可能にするキャッシュ機構

日本語にも対応したトークナイザやフィルタ

Chapter-1

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

Solrの検索までの流れ

Indexの作成から検索まで

DB

データソース Solrサーバ フロントアプリ

Solr Index

Webサーバ

ユーザー各種ドキュメント

既存データ

Webクロール

Indexの作成

検索クエリ

結果

バッチサーバ

Indexを作ることを、インデクシング、フィードなどと言う。

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

Solrの機能紹介

検索

検索クエリ

スコアによるソート

スコアリングについて

多言語に対応した柔軟な検索

ファセット検索(Facet)/緯度経度検索(Spatial)

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

スケールアウト

インデックスの複製:replication

分散横断検索:distributed

分散検索:Solr Cloud

Chapter-4,7,8

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

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勉強会

Solrの機能紹介(スコア)

スコアによるソート

スコア=検索条件の一致度の指数

検索条件によりマッチしたドキュメントが高スコア

Solrのスコアを算出する計算式

デフォルトではLuceneのスコア計算式

tf-idfのベクトルモデル

qint

2t,dNormt.getBoosttidfdinttfqqueryNormq,dcoordq,dscore

単語ヒット数 出現数 希少度

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

Solrの機能紹介(スコア)

単語ヒット数(coord)

検索したワードが幾つヒットしたか

例:OR検索した時などに影響「ジャガイモ ORベーコン ORタマネギ」で検索

「材料:ジャガイモ、ニンジン、豚肉」

「材料:ナス、鶏ひき肉、ピーマン、タマネギ」

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

ジャガイモ ・・・1個

タマネギ ・・・1個

ベーコン タマネギ ・・・2個

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

Solrの機能紹介(スコア)

出現数(tf)

1フィールドにそのワードが何個あるか

例:「Solr」で検索

「Solrを使ってみよう」

「SolrのSolrによるSolrのための検索」

「Solrって何?~検索エンジンSolr~」

Solr ・・・1回

Solr Solr Solr ・・・3回

Solr Solr ・・・2回

高スコア

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

Solrの機能紹介(スコア)

希少度(idf)

そのワードがどのくらい稀少か(Solrでは価値がある)

例:「ジャガイモ ORタマネギ」で検索

「材料:ジャガイモ、ニンジン、豚肉」

「材料:ナス、鶏ひき肉、ピーマン、タマネギ」

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

各ワードのドキュメント数を比較

ジャガイモ・・・1ドキュメント

タマネギ・・・2ドキュメント

高スコア

ジャガイモの方が希少

ジャガイモ

タマネギ

タマネギ

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

Solrの機能紹介(スコア)

Solrのスコア

単語のヒット数、出現頻度、希少度の他、フィールドの長さ(割合)、ブーストなどの要素を加味してスコアリングを行っている

通常の検索で、ソート条件を指定していないときや、「sort=score desc」を指定するとスコアでソート可能

fl=*,score とすることで、スコアの表示も可能

OSSなのでスコアの部分も自己流に改造も可能

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

検索エンジンの基本

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

大量データに対する検索が高速なのは

転置インデックス

のおかげ!

柔軟な検索が行えるのは

トークナイザと各種フィルタ

のおかげ!

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

多言語対応と柔軟な検索

トークナイザと言語フィルタの充実

数十か国もの言語をサポート

example内にも多数の定義あり

特に…

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

Kuromojiの辞書も内包

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

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

トークナイザとフィルタ

トークナイザ

日本語用:JapaneseTokenizerFactory

ホワイトスペース用:WhitespaceTokenizerFactory

N-Gram:NGramTokenizerFactory

フィルタ

文字フィルタ:MappingCharFilterFactory

品詞フィルタ:JapanesePartOfSpeechStopFilterFactory

禁止ワード:StopFilterFactory

大文字小文字:LowerCaseFilterFactory

Chapter-2

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

フィルタ紹介

文字フィルタ:MappingCharFilterFactory

トークナイズする前に文字を置き替えるフィルタ

例:「タ ゙」(半角は濁点も1文字)

「タ ゙」を「ダ」と置き替えることが可能

例:「斎」「齊」「齋」を「斉」の

に、「髙」を「高」に置き換える。

「斎藤さん」を「斉藤さん」でも探せる

「髙橋さん」を「高橋さん」でも探せる

意外と便利です

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

検索機能紹介

ファセット(facet)

ドリルダウン検索を実現するための機能

検索フォーム 検索

商品A+説明

商品B+説明

商品C+説明

商品D+説明

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

コレ

文書をカテゴリで絞り込むのに有効

カテゴリはジャンル、地域、金額など様々Chapter-4

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

検索機能紹介

ハイライタ(highlight)

検索ワードの書式を変えるための機能

Solr 検索

3件ヒットしました

1:改訂新版Apache Solr入門2:Apache Solr入門

3:Apache Solr 4 Cookbook

コレ

Chapter-4

検索したワードを目立たせる

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

Solrの運用・スケールについて

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

Solrのスケール

検索システムを構築する際に規模の見積りは重要

運用中のSolrが直面する課題…

利用するユーザー数が増えた(QPSの増加)

検索対象となるドキュメントが増えた

検索クエリが複雑になった

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

QPS:Query par Secondの略。1秒間に何クエリ処理できるかという性能指数のひとつ

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

検索性能低下の対策

クエリ改善

クエリチューニングが可能か調査する

スケールアップ

単純にSolrサーバを高性能化

CPUパワーアップ、メモリ増設、HDD高速化など

アプリの改修を行うことなく性能向上

スケールアウト

Solrはスケールアウトするための複数の機能を持つ

replication:インデックスの複製機能

distributed/Solr Cloud:分散検索機能

Chapter-8,9

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

Solrの活用・導入について

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

Solrの活用

どのようなところで活用できるか?(一例)

DBサーバの負荷軽減

検索システムのリプレース

新たなサービスへの利用

既存データの活用

アイディア次第で様々な利用が可能

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

データベースとの比較

大量のデータ(レコード)から特定のデータを探すという意味では、データベースも同じでは?

RDBと検索エンジンとの主な違い

RDB 検索エンジン

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

△ ◎

データの形式 正規化 非正規化

リアルタイム性 ◎ ○

トランザクション管理 ◎ ×

一致度によるソート △ ◎

検索式 SQL 専用クエリ

知名度 ◎ ○

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

Solrの活用

DBサーバの負荷軽減

複雑な検索も増えた上に、アクセスも増加している

フリーワードをLike検索していたが、そろそろ限界

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

検索フォーム 検索

商品A+説明

商品B+説明

商品C+説明

商品D+説明

詳細

詳細

詳細

詳細

商品A

詳細説明

Solrから取得した「商品A」のコード値をDBで引くだけ検索→一覧表示までをSolrで作成

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

Solrの活用

DBサーバの補助機能として使う場合の注意

Solrはトランザクション管理ができない

在庫管理・・・×

複数のユーザが更新する・・・×

リアルタイム性が低い

索引を作成→検索可能となるため、タイムラグが発生する

要件次第でラグを最小にすることは可能だが、RDBのような使い方は不得意

データベースとのデータの整合性やお互いの機能の利点を活かす使い方が重要

検索エンジン特有の知識が必要

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

Solrの活用

検索システムのリプレース

現行システムにも検索エンジンを使用している場合

• 現在の検索エンジンではスペック不足• ライセンス料金が高い• 実現したい機能が利用できない

Solrの利用も視野に入れてみる!

• スケールアウトが考慮されている• OSSなのでライセンス料不要• 機能が多い&必要であれば自分で機能追加ができるSolrならば…

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

Solrの活用

新たなサービスへの利用

現行のサイトにフリーワードの検索機能が無い

検索機能を付与してみる。

現行システムの検索を強化する

DBを使った社内システムだが、キーワードにマッチせず、検索結果がゼロ件になることが多々あった。

検索エンジンの導入により、柔軟なフリーワードを実現

電話対応用のシステムだが、過去事例の検索に10秒くらい時間がかかっていた。

検索エンジン導入により、レスポンスが1秒以下に!

顧客満足度が向上

業務効率の向上&顧客満足度も向上

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

Solrの活用

既存データの活用

分析ツールとして活用してみる

強力な形態素解析機を活用して、データを集計

捨てていたログを検索機能を使って分析してみる

「検索エンジン」を使うことで新たな気付きがあるかも知れない

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

ひとこと

Apache ProjectなのでOSSの中でも信頼性が高く、国内外で実績も多くあります。

顧客がOSSを心配することもあるかもしれませんが…

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

Solrは検索エンジンが初めての人でも導入しやすい

改訂新版 Apache Solr入門もあります!

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

これを機に、またSolrを盛り上げましょう!!

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

ご清聴ありがとうございました

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