Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
補足: 検索ノイズとは
ユーザーにとって、「これじゃない」という検索結果のこと。
<例> 東京都
● 形態素解析:見出し語→「東京都」
○ 「東京都」を含む文章のみが検索され、「京都」を含む文書は検索されない。
(完全一致が保証される)
● 2-Gram:見出し語→「東京」「京都」
○ 「京都」を含む文書も検索結果に出てしまうが、ユーザーにとっては不適合情
報。⇒検索ノイズ
18
Slide 19
Slide 19 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
結局どっちがいいの?
● 検索漏れ絶許(業務系システム、ログ分析など)
⇒ N-Gram
● いい感じで検索したい(toCのサービスなど)
⇒ 形態素解析
● どっちの利点もほしい
⇒ N-Gram+形態素解析のハイブリット式
○ 設定の工夫が必要なので開発コスト高め
○ インデックス2種類作るので、データ量が大きくなる
19
Slide 20
Slide 20 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
OpenSearchの仕組み
20
Slide 21
Slide 21 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
OpenSearchとは(おさらい+α)
● AWSが提供しているフルマネージド全文検索サービスである「Amazon
OpenSearch Service」で使用されている全文検索エンジン
● 分散型(クラスター構成)の検索エンジンである
● データの入出力(CRUD)はREST API
21
Slide 22
Slide 22 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
OpenSearchのデータ構造
クラスター構成
22
Cluster
Node
(≒Server)
Node
(≒Server)
Node
(≒Server)
Slide 23
Slide 23 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
OpenSearchのデータ構造
23
Node(≒Server)
Index(≒Database)
Type(≒Table)
Document(≒Row)
Document
Type Document
Document
OpenSearch RDB
Index Database
Type Table
Document Row
Field Column
検索インデックスとは違うも
のを指すので注意
Slide 24
Slide 24 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
OpenSearchのIndex設定
24
Slide 25
Slide 25 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
Index(not 検索インデックス)の設定
サンプルとして、シンプルなデータ構造を定
義します。
※OpenSearchのデータ操作(CRUD)は
REST APIで行う
※前提:OpenSearch Dashboard上で操作
します
25
Index名
デフォルトで用意されている
Analyzer
※形態素解析の場合
Slide 26
Slide 26 text
Copyright (C) 2022 Toranoana Inc. All Rights Reserved.
Analyzer(アナライザー)とは
● 文章の分析・変換を行ってくれる機能
● 以下の3つから構成されている
○ Character filter:文字列をTokenizerで分割する前に必要な処理を行う
○ Tokenizer:文字列を単語に分割する ※必須設定
○ Token filters:Tokenizerで分割された内容に対し、必要な処理を行う
● 実行順は以下の通り
○ Character filter → Tokenizer → Token filters
● データ登録(インデックス作成)時、検索時の両方で使用する
26