Slide 1

Slide 1 text

http://www.web-tips.co.jp/ Copyright © 2014- Web Tips Co.,Ltd All Rights Reserved. シラサギ勉強会 Elasticsearch 2017/9/15 株式会社ウェブチップス 中野 英雄

Slide 2

Slide 2 text

Elasticsearchとは? 2

Slide 3

Slide 3 text

3 全⽂検索サーバーとして知られていますが 全⽂検索サーバーって?

Slide 4

Slide 4 text

4 データベースの⼀つである NoSQL データベースに分類されるデータベース

Slide 5

Slide 5 text

ACID特性とCAP定理 5

Slide 6

Slide 6 text

6 詳しくは: http://masawan-guitar.hatenablog.com/entry/2016/08/14/163447

Slide 7

Slide 7 text

7 ElasticsearchはCP型のデータベース ただし、 https://discuss.elastic.co/t/elasticsearch-and-the-cap- theorem/15102/3によると、not fully Pでnot fully Aでnot fully Cであ る

Slide 8

Slide 8 text

転地インデックス 通常のDBと全⽂検索を分かつもの 8

Slide 9

Slide 9 text

9 だいたいのDB(MongoDBを含む) B-Treeインデックス 全⽂検索 転地インデックス

Slide 10

Slide 10 text

10 http://gihyo.jp/dev/serial/01/search-engine/0003 ⽐較的以下のページの解説が分かりやすい

Slide 11

Slide 11 text

⾔語処理 全⽂検索を特徴づけるもの 11

Slide 12

Slide 12 text

揺れ • 英語 • 単複/3⼈称: man ⇔ men • 現在と過去: run ⇔ ran • ⽇本語 • 半⾓と全⾓ • アラビア数字と漢数字 • 送り仮名: ⾒積もり ⇔ ⾒積り⇔ ⾒積 • フォルダーとフォルダ • 略語: ⾃販機 ⇔ ⾃動販売機 12

Slide 13

Slide 13 text

インデックス時の正規化 vs 検索時の展開 • インデックス時の正規化 • DB格納前に「正規語」に統⼀して格納する • アカデミックにいうなら、⾒出し語(lemma)といった⽅がいいけど… • 検索時の展開 • 検索時に可能な組み合わせでOR検索する • 例: 「⾒積もり OR ⾒積り OR ⾒積」で検索 • どちらがいいかはケース・バイ・ケース • 例: マツケン 13

Slide 14

Slide 14 text

フレーズ検索 • 形態素解析 • ⽇本語形態素解析により「東京」「特許」「許可局」に分割される。 • このため「特許」で検索した際、「東京特許許可局」を含む⽂書が ヒットする(再現率UP) • では「東京特許許可局」を検索すると? 14

Slide 15

Slide 15 text

フレーズ検索 15 東京 AND 特許 AND 許可局?

Slide 16

Slide 16 text

フレーズ検索 16 「東京」と「特許」が隣接し、「特 許」と「許可局」が隣接する⽂書に マッチする これを「フレーズ検索」と呼ぶ

Slide 17

Slide 17 text

フレーズ検索 • 隣接って? • 必ずしも隣り合っている必要があるかは、全⽂検索エンジンの設定に よる。 • 例えば「レディーガガ」で検索した場合に「レディー・ガガ」にマッ チするように、1つ⾶ばしぐらいなら隣接しているとみなす検索エンジ ンの⽅が多い。 17

Slide 18

Slide 18 text

Elasticsearch 18

Slide 19

Slide 19 text

公式情報 • 公式ページ • https://www.elastic.co/products/elasticsearch • Support Matrix • https://www.elastic.co/jp/support/matrix • ※InstallationにはOracle JDK version 1.8.0_131の利⽤が推奨されている • Getting Started • https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html • GitHub • https://github.com/elastic/elasticsearch • License • Apache License 19

Slide 20

Slide 20 text

クラスタ構成 20 https://gist.github.com/yano3/3f5abc9eba0c1ad6a0508056961b273c

Slide 21

Slide 21 text

SHIRASAGIでのElasticsearch の設定 21

Slide 22

Slide 22 text

⽇本語設定 項⽬名 英語名 例 形態素解析 kuromoji ⽂字の正規化 icu_normalizer ㌀ → アパート、アパート → アパート 踊り字の正規化 kuromoji_iteration_mark 時々 → 時時、こゝろ→こころ 活⽤形の正規化 kuromoji_baseform 飲み → 飲む ※連⽤形 → 終⽌形 助詞などの除去 kuromoji_part_of_speech 寿司がおいしいね → 「寿司」「おいしい」だ け残して、「が」と「ね」を削除 頻出語句で検索に 有⽤でない⾔葉を 除去 ja_stop これ、それ、あれ、しかし、私 漢数字の正規化 kuromoji_number ⼀〇〇〇(漢数字のゼロ)→ 1000 ⻑⾳の除去 kuromoji_stemmer プリンター → プリンタ 22 http://qiita.com/shin_hayata/items/41c07923dbf58f13eec4

Slide 23

Slide 23 text

添付ファイル • Ingest Attachment Plugin • https://www.elastic.co/guide/en/elasticsearch/plugins/master/ing est-attachment.html • 内部ではApache Tikaを使ってテキストを抽出 23

Slide 24

Slide 24 text

24