とーますメモ

Ruby on Rails / Goなどの学習メモ

【Elasticsearch】概要について理解する

Elasticsearchが何かをネットで調べるとよく「全文検索エンジン」という言葉を
目にするかと思うが、正直、自分の場合はよくわからなかった。
このページでは、Elasticsearchの概要について解説する。

全文検索エンジンとは?

Wikipediaによると以下のようにある。

全文検索エンジンの一つ。
全文検索とは、コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。「ファイル名検索」や「単一ファイル内の文字列検索」と異なり、「複数文書にまたがって、文書に含まれる全文を対象とした検索」という意味で使用される。

by Wikipedia

なるほど。「複数文書にまたがって、文書に含まれる全文を対象とした検索」とな。。
この文章だけだと、なんか検索に凄い時間がかかりそうな気がするが
調べてみると全文検索エンジンには以下のタイプがある模様。

1)grep

ファイルを一つずつ順番に検索対象になるかをチェックしていく方法
ファイルが増えると、速度が低下する模様。そりゃそうだろう。

2)索引(インデックス)型

予め検索対象となる文章郡を走査しておき、高速な検索が可能になるような索引データを準備しておき
検索時にはこの索引データを対象にした検索を行うことで、検索の高速化を図る方法。
Elasticsearchはこの索引型。

索引(インデックス)の作成方法

文書から索引を作成するとき、文章から「単語」を抽出する。
この抽出された単語と文書を紐付けて索引データ(転置ファイルとも言うらしい)を作成するが
日本語の場合、英語などと違い文書の間にスペースなどの単語を区切る目印が無いため
適切な単語を抽出することが難しい。

そこで日本語の場合は以下の方法で単語を抽出する。

1)N-gram

この方法により適切な単語が抽出されるとは限らないが
N(1以上の数字)文字ずつ文書を区切り、その文字列を索引とする。
次の形態素解析と比べて、ただ指定された数字単位で文字を区切るだけなので早そう。

2)形態素解析

辞書データを用いることで実際に使用される単語を抽出する。
前のN-gramと比べて、辞書と比較しながら索引を作るのでちょっと遅そう。

レンタルサーバへのインストールは・・・

検索する限り、レンサバへインストールしている例はないっぽい。
メモリを食うなどの理由もしくはそもそも無理なのか。。
Elasticsearchをインストールする際は、VPSなどサーバを別途に立てて
使用したほうが良いと思われる。

まとめ

  • Elasticsearchとは「索引型」の「全文検索エンジン」の一種である。
  • 索引型の全文検索エンジンでは索引を作成するため、文章から単語を抽出し、索引データを作成する必要がある。