Elasticsaerchでサジェスト検索を作ってみよう
目次
- Elasticsearch の説明
- 検索の基礎知識
- サジェスト検索をやってみる
- まとめ
Elasticsearchとは
Elastic社が開発している全文検索エンジンで、リアルタイムデータ分析、ログ解析、全文検索など様々な用途に使われています。
検索の基礎知識
Elasticsearchでは保存されている文書の文字と、検索ワードで与えられた文字列がマッチしたら検索結果に含まれます
たとえば、
this is a test
というデータがあった場合、
this / is / a / test
と分解されるので、
this
か is
か a
か test
で検索するとこのデータが返ってきます。
サジェスト検索をやってみる
上の設定のままだと t
や th
という検索ワードではデータが返ってこないためサジェスト検索を実現することができません。
そこで文章の解析方法を指定するTokenizerの設定を変更します。
今回は、this
を t
th
のように単語をより詳細に分割をする必要があります。
そのためには、ngram
と edge_ngram
という Tokenizer があるので見ていきましょう。
ngram は、以下の様に単語を1~2文字に分割してくれます。
t th h hi i is s / i is s / a / t te e es s st t
edge_ngram は、以下の様に文字を分割してくれます。
t th thi this / i is / a / t te tes test
こうすることで、t
や th
と入力したタイミングで結果を返すサジェスト検索を実現することができます。
まとめ
- Elasticsearch は様々な用途に使われている検索エンジン
- Tokenizerが分割したTokenに当てはまる文字とInputが一致すると検索結果に含まれる
- サジェスト検索をするためには単語単位ではなく、文字数ベースで文章の分割をする必要がある