Text
Page: 1
全文検索の 基本的なしくみ @myokoym 全文検索エンジンGroonga勉強会@札幌 2015-06-14 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 2
全文検索の流れ 文書を登録 キーワードで検索 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 3
登録の流れ ノーマライズ トークナイズ トークンをキーとして文書IDを インデックスに登録 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 4
検索の流れ ノーマライズ トークナイズ トークンでインデックスを検索 文書IDを取得 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 5
用語 ノーマライズ トークナイズ トークン 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 6
ノーマライズ 正規化 大文字小文字、全角半角などを揃え る ノーマライザーによって挙動が変わ る 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 7
トークナイズ 文書やキーワードをトークンに 分割する トークナイザーによって分け方 が異なる 大きく分けるとN-gramと形態素解析 の2種類 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 8
N-gram 文字数で分割する bi-gramは2文字ごと tri-gramは3文字ごと 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 9
形態素解析 品詞を判別して分割する 別途辞書が必要 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 10
トークン インデックスのキー Groongaで採用している転置 インデックス方式では、トーク ンごとに文書リストが作成され る 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 11
トークナイズの例 東京都府中市 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 12
bi-gram 東京/京都/都府/府中/中市/市 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 13
tri-gram 東京都/京都府/都府中/府中市/中 市/市 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 14
形態素解析 東京/都/府中/市 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 15
全文検索の流れ 文書を登録 キーワードで検索 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 16
全文検索の流れ 文書を登録 キーワードで検索 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 17
登録の流れ ノーマライズ トークナイズ トークンをキーとして文書IDを インデックスに登録 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 18
サンプル文書 文書ID 全文検索の基本的なしくみ 内容 1 カレー食べた 2 カレ-食べたい 3 カレー好き Powered by Rabbit 2.1.7
Page: 19
ノーマライズ 1. カレー食べた 2. カレー食べたい 3. カレー好き 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 20
トークナイズ MeCabの例 1. カレー/食べ/た 2. カレー/食べ/たい 3. カレー/好き 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 21
インデックスに登録 キー カレー 食べ た たい 好き 全文検索の基本的なしくみ 文書IDリスト [1 2 3] [1 2] [1] [2] [3] Powered by Rabbit 2.1.7
Page: 22
全文検索の流れ 文書を登録 キーワードで検索 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 23
検索の流れ ノーマライズ トークナイズ トークンでインデックスを検索 文書IDを取得 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 24
サンプルキーワード 食べた 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 25
ノーマライズ 食べた ノーマライズ対象なし 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 26
トークナイズ 食べ/た 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 27
インデックス(再掲) キー カレー 食べ た たい 好き 全文検索の基本的なしくみ 文書IDリスト [1 2 3] [1 2] [1] [2] [3] Powered by Rabbit 2.1.7
Page: 28
トークンでインデックスを検 索 食べ -> [1 2] た -> [1] 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 29
文書IDを取得 [1] 両方含まれるもの 設定によって出現位置も調べる 隣り合っているかどうかなど 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 30
ヒット1件 カレー食べた 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 31
ポイント 登録と検索で同じノーマライザ ーとトークナイザーを使う必要 がある それはなぜか? 全文検索の基本的なしくみ Powered by Rabbit 2.1.7
Page: 32
参考 Groongaの可変型Ngramトー クナイザーについて - Naoya Murakami - Rabbit Slide Show http://slide.rabbit-shocker.org/authors/naoa/ groonga-tokenizer-talks-naoa/ 全文検索の基本的なしくみ Powered by Rabbit 2.1.7