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
370
Google AMPとPWAをさらっと紹介
sunny4381
0
210
Other Decks in Programming
See All in Programming
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
Amazon Bedrock Multi Agentsを試してきた
tm2
1
290
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
560
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
370
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
260
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
Immutable ActiveRecord
megane42
0
140
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
560
color-scheme: light dark; を完全に理解する
uhyo
3
310
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
120
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
780
Rails アプリ地図考 Flush Cut
makicamel
1
120
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Why Our Code Smells
bkeepers
PRO
336
57k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Speed Design
sergeychernyshev
27
790
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Docker and Python
trallard
44
3.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
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