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
Drupal Elasticsearch Connector の日本語検索の質を高める
Search
Koji Kawamura
October 06, 2021
Technology
0
230
Drupal Elasticsearch Connector の日本語検索の質を高める
2021-10-06 に Acquia でぶちゃんねるで発表した資料です。
Koji Kawamura
October 06, 2021
Tweet
Share
More Decks by Koji Kawamura
See All by Koji Kawamura
ESRE とか ELSER とか RRF ってナニ!? もろもろ理解してスッキリしよう
ijokarumawak
1
760
Other Decks in Technology
See All in Technology
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
140
Kubernetesトラフィックルーティング徹底解説/Kubernetes-traffic-deep-dive
oracle4engineer
PRO
5
860
Will Positron accelerate us?
lycorptech_jp
PRO
1
130
A/Aテストにおけるサンプルサイズ/japanr2024
nikkei_engineer_recruiting
1
630
Autonomous Database サービス・アップデート (FY25)
oracle4engineer
PRO
0
280
Replit Agent
kawaguti
PRO
2
220
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
1
110
KubeCon NA 2024 Recap: Managing and Distributing AI Models Using OCI Standards and Harbor / Kubernetes Meetup Tokyo #68
pfn
PRO
0
120
ミスが許されない領域にAIを溶け込ませる プロダクトマネジメントの裏側
t01062sy
8
8.8k
IVRyエンジニア忘年LT大会2024 クリティカルユーザージャーニーの整理
abnoumaru
0
140
開志専門職大学特別講義 2024 オープニング
1ftseabass
PRO
0
230
Explain EXPLAIN
keiko713
10
2.9k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
490
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
KATA
mclloyd
29
14k
How to Think Like a Performance Engineer
csswizardry
21
1.2k
Rails Girls Zürich Keynote
gr2m
94
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Into the Great Unknown - MozCon
thekraken
33
1.5k
Raft: Consensus for Rubyists
vanstee
136
6.7k
Visualization
eitanlees
145
15k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Bash Introduction
62gerente
608
210k
Transcript
Drupal Elasticsearch Connector の 日本語検索の質を高める Koji Kawamura, Education Architect Oct
6, 2021
適切に権限を絞ったユーザを利用する "elastic" はスーパーユーザ! Elasticsearch drupal_* その他 drupal-connector
Elasticsearch に ロールを作成 クラスタ稼働状況の monitor 権限と 特定インデックスの操作の み許可
Elasticsearch に ユーザを作成 先程作成したロールを付与 したユーザを作成 パスワードに # があると Drupal から接続時にエ
ラーになるので注意 (内部で parse_url 関数を 利用しているため)
Drupal から Elasticsearch へ セキュアに接続 Elasticsearch 側のセキュ リティ設定をするのは大前 提。 Connector
の設定画面で 設定したパスワードはその まま閲覧できてしまう 最低限の権限でアクセス
インデックス名 インデックス名のプリフィッ クスをつけておくと他のイン デックスと差別化しやすい
Elasticsearch で全文検索 転置インデックスを作っている Elasticsearch drupal_* drupal-connector pages https://www.book-editing.com/why-book-indexing/ 本の末尾にある索引のような、転置インデックス
POST _analyze { "analyzer": "standard", "text": ["可愛いしいたけを試してみてください。"] } 検索漏れは少ないが、ノイズが大量発生。 「たけのこ」でもヒットするでしょう。
デフォルトの日本語解析
POST _analyze { "analyzer": "kuromoji", "text": ["可愛いしいたけを試してみてください。"] } 「しいたけ」で検索した場合のみヒットできる。 ノイズが減る。
Kuromoji は Elasticsearch のプラグイン。 形態素解析 kuromoji
Elasticsearch インデックスのカスタマイズ Drupal 側で作成する前に、事前に作成しておく Elasticsearch drupal_* drupal-connector pages Drupal 側から連携する前
に明示的に作成 1 2
インデックスを事前作成 PUT drupal_allcontents { "mappings": { "properties": { "_language": {
"type": "keyword" }, "body": { "type": "text", "analyzer": "kuromoji" } }, "id": { "type": "keyword" } } } 事前に作成しておけば、 Drupal の設定画面から指 定できない設定も行える
kuromoji でノイズを 減らすことができた! 可愛いしいたけを試してみてください。 でも、 ヒットしない
kuromoji_readingform で 読み仮名検索 可愛いしいたけを試してみてください。 doc #1 語 ドキュメント ID シイタケ
1 本文も検索語もカタカナで 解析してあげる
記事の本文を複数の方法でインデックス body を body と body_kana の二つの方法で索引付け
ユーザ辞書 kuromoji では辞書を使っ て単語の分割をしている 辞書に載っていない単語、 新語は検索もれが発生し てしまう そこでユーザ辞書! kuromoji_ dictionari
es.zip vi dictionaries/userdict_ja.txt 平茸,平茸,ヒラタケ,カスタム名詞 zip -r kuromoji_dictionaries.zip dictionaries
同義語 (シノニム) 同じものだけど 別の呼び方 ミルク、牛乳
おまけ Connector が発行するクエリってどんなの? Slow query でログ出力して観察
Elastic App Search という選択肢も クエリログの分析 ユーザが検索したキーワードで検索結果がヒッ トしない、もしくはクリックされない場合、検索エ ンジンとして改善が必要 関連度チューニング 複数の検索語を入力する際、全て含む
AND いずれか OR 3つ以上の場合少なくとも 1つ、 曖昧検索する?などを一つのスライダで制御可 能 クローラ Web サイトの自動巡回クローラがついに GA! より簡単にサイト内検索を提供可能に https://www.elastic.co/jp/app-search/
Elastic 公式トレーニングの紹介 体系的に学びたい方は是非 どんなコース?受講方法は? Elastic 公式トレーニングサービスのご紹介 https://www.elastic.co/jp/webinars/intro-to-elastic-training 定期開催 Elastic 公式トレーニングスケジュール
https://www.elastic.co/jp/training/schedule?timezone=Asia+-+Tokyo
Q&A Thank you!