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
340
Google AMPとPWAをさらっと紹介
sunny4381
0
210
Other Decks in Programming
See All in Programming
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
600
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.7k
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.4k
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
Outline View in SwiftUI
1024jp
1
320
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
290
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
1.9k
CSC509 Lecture 11
javiergs
PRO
0
180
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Speed Design
sergeychernyshev
24
610
Scaling GitHub
holman
458
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Producing Creativity
orderedlist
PRO
341
39k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Adopting Sorbet at Scale
ufuk
73
9.1k
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