Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Drupal Elasticsearch Connector の日本語検索の質を高める

Drupal Elasticsearch Connector の日本語検索の質を高める

2021-10-06 に Acquia でぶちゃんねるで発表した資料です。

0a1019c6fed8e814308bc5dfb7ddbaa3?s=128

Koji Kawamura

October 06, 2021
Tweet

Other Decks in Technology

Transcript

  1. Drupal Elasticsearch Connector の 日本語検索の質を高める Koji Kawamura, Education Architect Oct

    6, 2021
  2. 適切に権限を絞ったユーザを利用する "elastic" はスーパーユーザ! Elasticsearch drupal_* その他 drupal-connector

  3. Elasticsearch に ロールを作成 クラスタ稼働状況の monitor 権限と 特定インデックスの操作の み許可

  4. Elasticsearch に ユーザを作成 先程作成したロールを付与 したユーザを作成 パスワードに # があると Drupal から接続時にエ

    ラーになるので注意 (内部で parse_url 関数を 利用しているため)
  5. Drupal から Elasticsearch へ セキュアに接続 Elasticsearch 側のセキュ リティ設定をするのは大前 提。 Connector

    の設定画面で 設定したパスワードはその まま閲覧できてしまう 最低限の権限でアクセス
  6. インデックス名 インデックス名のプリフィッ クスをつけておくと他のイン デックスと差別化しやすい

  7. Elasticsearch で全文検索 転置インデックスを作っている Elasticsearch drupal_* drupal-connector pages https://www.book-editing.com/why-book-indexing/ 本の末尾にある索引のような、転置インデックス

  8. POST _analyze { "analyzer": "standard", "text": ["可愛いしいたけを試してみてください。"] } 検索漏れは少ないが、ノイズが大量発生。 「たけのこ」でもヒットするでしょう。

    デフォルトの日本語解析
  9. POST _analyze { "analyzer": "kuromoji", "text": ["可愛いしいたけを試してみてください。"] } 「しいたけ」で検索した場合のみヒットできる。 ノイズが減る。

    Kuromoji は Elasticsearch のプラグイン。 形態素解析 kuromoji
  10. Elasticsearch インデックスのカスタマイズ Drupal 側で作成する前に、事前に作成しておく Elasticsearch drupal_* drupal-connector pages Drupal 側から連携する前

    に明示的に作成 1 2
  11. インデックスを事前作成 PUT drupal_allcontents { "mappings": { "properties": { "_language": {

    "type": "keyword" }, "body": { "type": "text", "analyzer": "kuromoji" } }, "id": { "type": "keyword" } } } 事前に作成しておけば、 Drupal の設定画面から指 定できない設定も行える
  12. kuromoji でノイズを 減らすことができた! 可愛いしいたけを試してみてください。 でも、 ヒットしない

  13. kuromoji_readingform で 読み仮名検索 可愛いしいたけを試してみてください。 doc #1 語 ドキュメント ID シイタケ

    1 本文も検索語もカタカナで 解析してあげる
  14. 記事の本文を複数の方法でインデックス body を body と body_kana の二つの方法で索引付け

  15. ユーザ辞書 kuromoji では辞書を使っ て単語の分割をしている 辞書に載っていない単語、 新語は検索もれが発生し てしまう そこでユーザ辞書! kuromoji_ dictionari

    es.zip vi dictionaries/userdict_ja.txt 平茸,平茸,ヒラタケ,カスタム名詞 zip -r kuromoji_dictionaries.zip dictionaries
  16. 同義語 (シノニム) 同じものだけど 別の呼び方 ミルク、牛乳

  17. おまけ Connector が発行するクエリってどんなの? Slow query でログ出力して観察

  18. Elastic App Search という選択肢も クエリログの分析 ユーザが検索したキーワードで検索結果がヒッ トしない、もしくはクリックされない場合、検索エ ンジンとして改善が必要 関連度チューニング 複数の検索語を入力する際、全て含む

    AND いずれか OR 3つ以上の場合少なくとも 1つ、 曖昧検索する?などを一つのスライダで制御可 能 クローラ Web サイトの自動巡回クローラがついに GA! より簡単にサイト内検索を提供可能に https://www.elastic.co/jp/app-search/
  19. Elastic 公式トレーニングの紹介 体系的に学びたい方は是非 どんなコース?受講方法は? Elastic 公式トレーニングサービスのご紹介 https://www.elastic.co/jp/webinars/intro-to-elastic-training 定期開催 Elastic 公式トレーニングスケジュール

    https://www.elastic.co/jp/training/schedule?timezone=Asia+-+Tokyo
  20. Q&A Thank you!