0
0

More than 1 year has passed since last update.

今更聞けない、Elasticsearchを超簡単に説明

Posted at

前提条件

背景

Laravel × Elasticsearchの事例がそこまで多くなかったので
自分が調べたことが今からやろうと思ってる人の助けに少しでもあればと思いまして。

環境

PHP 7.4

Laravel 6.2

Elasticsearch 7.8

この記事を読んだ方がいい人

・MySQLの経験がある程度あってSQLってこんな感じだよねー、な感覚がある人。
・RDBでは遅くなってしまう検索を解決してくれるイケイケな道具があることを知りつつ、それがなんなのかよくわからない人。

この記事を読まない方がいい人

・Elasticsearchの実務経験がすでにあって全文検索エンジンとマブダチな人。
・日本人ならGroongaにしろよ、って人。

Elasticsearchとは

全文検索エンジンの一種。

そもそもそれってなに?

ざっっっっくり言うと、MySQLのLIKE検索をちょーはやくするためのやつ。

なんではやいの?

文字列の検索には2種類あるらしい。

逐次検索 と 索引検索

前者はGrepコマンドでお馴染み、ぜーんぶのデータを確認して合致するものを探す力技作業。

後者は、「Qiita」の文字列を含むデータはこことここにあるよ!的な状態をあらかじめ作っておくことで素早くけんさくできるようになってるもの。

他にはどんな種類のものがあるの

どこ 概要 備考
Elasticsearch オランダのElastic社。Kibanaだしてるところ。 名前がかっこいい。 AWSはこのソフトウェアをラップしてサービス化してるだけっぽい。Elasticって単語はAmazonが大好きだからAmazonが名付けたのかと思ってた
Algolia フランスのAlgolia社 Laravelが標準サポートしてる。
MySQL Oracle みんな大好き MySQLにも全文検索の機能提供してた気がする詳しくは知らん
Groonga 未来検索ブラジル 2ちゃんのひろゆきが役員やってる?やってた?会社

難しい言葉が出てきてつらい

日本語をインデクシング (インデックスすること)するにあたって避けて通れない言葉がこの2つ。
日本語は英語と違って単語と単語の間にスペースがないから、単語の区切り目が判断できない。

その問題を解決するための手法がこの2つということ。

N-gram

形態素解析

逆に言えばわけのわからん言葉はこれくらい。

N-gram

Nというのはエンジニアお馴染みの数字を表したパラメータ。
n=1 ~ n=3には特別な名前がついている

・uni-gram
・bi-gram
・tri-gram

要は文字をn文字ずつに分けて解釈するわ、っていう手法。

完全におならだと勘違いしていたよ

のような文章なら

完全|全に|にお|おな|なら|らだ|だと|と勘|勘違|違い|いし|して|てい|いた|たよ|

みたいな感じでインデクシングする。

「おなら」という言葉を検知するのに「おな」とか「なら」とかは意味がないので、ちょっと効率悪いのが特徴。

形態素解析

日本語を読み取って意味のあるかたまりに分けながらインデクシングする。

そのための日本語形態素解析エンジンといわれるもの。

はっ?そんなんあるなら最初から言えや!

って感じですが、内部に辞書を保持する必要があり言葉のブレを微調整する必要ある場合も。

まとめ

今回はElasticsearchの概要の概要のみを書きました。

次回は基本的な用語をまとめたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0