Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
シラサギ勉強会 - Elasticsearch
Search
NAKANO Hideo
September 15, 2017
Programming
0
110
シラサギ勉強会 - Elasticsearch
全文検索とはなんぞやから入って、シラサギでのElasticsearchの応用例まで広く浅く解説。
NAKANO Hideo
September 15, 2017
Tweet
Share
More Decks by NAKANO Hideo
See All by NAKANO Hideo
自治体向けのCMS+グループウェア+ウェブメール=『シラサギ』のご紹介
sunny4381
0
350
Google AMPとPWAをさらっと紹介
sunny4381
0
210
Other Decks in Programming
See All in Programming
선언형 UI에서의 상태관리
l2hyunwoo
0
150
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
あれやってみてー駆動から成長を加速させる / areyattemite-driven
nashiusagi
1
200
ソフトウェアの振る舞いに着目し 複雑な要件の開発に立ち向かう
rickyban
0
890
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
MCP with Cloudflare Workers
yusukebe
2
220
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
270
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
210
Refactor your code - refactor yourself
xosofox
1
260
Go の GC の不得意な部分を克服したい
taiyow
2
770
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
40
7.1k
A Philosophy of Restraint
colly
203
16k
Unsuck your backbone
ammeep
669
57k
It's Worth the Effort
3n
183
28k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Six Lessons from altMBA
skipperchong
27
3.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Transcript
http://www.web-tips.co.jp/ Copyright © 2014- Web Tips Co.,Ltd All Rights Reserved.
シラサギ勉強会 Elasticsearch 2017/9/15 株式会社ウェブチップス 中野 英雄
Elasticsearchとは? 2
3 全⽂検索サーバーとして知られていますが 全⽂検索サーバーって?
4 データベースの⼀つである NoSQL データベースに分類されるデータベース
ACID特性とCAP定理 5
6 詳しくは: http://masawan-guitar.hatenablog.com/entry/2016/08/14/163447
7 ElasticsearchはCP型のデータベース ただし、 https://discuss.elastic.co/t/elasticsearch-and-the-cap- theorem/15102/3によると、not fully Pでnot fully Aでnot fully
Cであ る
転地インデックス 通常のDBと全⽂検索を分かつもの 8
9 だいたいのDB(MongoDBを含む) B-Treeインデックス 全⽂検索 転地インデックス
10 http://gihyo.jp/dev/serial/01/search-engine/0003 ⽐較的以下のページの解説が分かりやすい
⾔語処理 全⽂検索を特徴づけるもの 11
揺れ • 英語 • 単複/3⼈称: man ⇔ men • 現在と過去:
run ⇔ ran • ⽇本語 • 半⾓と全⾓ • アラビア数字と漢数字 • 送り仮名: ⾒積もり ⇔ ⾒積り⇔ ⾒積 • フォルダーとフォルダ • 略語: ⾃販機 ⇔ ⾃動販売機 12
インデックス時の正規化 vs 検索時の展開 • インデックス時の正規化 • DB格納前に「正規語」に統⼀して格納する • アカデミックにいうなら、⾒出し語(lemma)といった⽅がいいけど… •
検索時の展開 • 検索時に可能な組み合わせでOR検索する • 例: 「⾒積もり OR ⾒積り OR ⾒積」で検索 • どちらがいいかはケース・バイ・ケース • 例: マツケン 13
フレーズ検索 • 形態素解析 • ⽇本語形態素解析により「東京」「特許」「許可局」に分割される。 • このため「特許」で検索した際、「東京特許許可局」を含む⽂書が ヒットする(再現率UP) • では「東京特許許可局」を検索すると?
14
フレーズ検索 15 東京 AND 特許 AND 許可局?
フレーズ検索 16 「東京」と「特許」が隣接し、「特 許」と「許可局」が隣接する⽂書に マッチする これを「フレーズ検索」と呼ぶ
フレーズ検索 • 隣接って? • 必ずしも隣り合っている必要があるかは、全⽂検索エンジンの設定に よる。 • 例えば「レディーガガ」で検索した場合に「レディー・ガガ」にマッ チするように、1つ⾶ばしぐらいなら隣接しているとみなす検索エンジ ンの⽅が多い。
17
Elasticsearch 18
公式情報 • 公式ページ • 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
クラスタ構成 20 https://gist.github.com/yano3/3f5abc9eba0c1ad6a0508056961b273c
SHIRASAGIでのElasticsearch の設定 21
⽇本語設定 項⽬名 英語名 例 形態素解析 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
添付ファイル • Ingest Attachment Plugin • https://www.elastic.co/guide/en/elasticsearch/plugins/master/ing est-attachment.html • 内部ではApache
Tikaを使ってテキストを抽出 23
24