目的
普段から検索に関する仕事に関わっていますが、検索システムについて深く知るためにインプットしたものをアウトプットとして投稿します。
検索システムとは
検索システムとは一般的には蓄積された情報データの中からユーザが探したい情報を効率よく探し出して、ユーザに表示させるシステムです。例としてGoogleが開発しているChromeが該当します。私達が検索したいことを検索インターフェースに入力し、すぐに検索したいページが一覧で表示されると思います。この流れは普段私達が使うWEBサービス(ECサイト、SNS)でも同じ流れです。
ユーザが検索システムを使用する流れ
- ユーザは探したい情報を見つけるためにUIに単語を書いていきます.
普段から私達は以下の画像のように検索したい単語を入力していると思います.
上記の画像はユーザが東京のホテルを探したいときにインターフェースに「東京 ホテル」と入力します.この入力単語はクエリとして検索エンジンに問い合わせをします.すると検索エンジンは対象となるドキュメントを複数レスポンスしてユーザに結果を表示します.
ざっくりとした感じですが,ユーザが使用する検索システムの流れになります.
全文検索
検索システムは、情報の種類や検索の目的に応じて、さまざまな形で実装されています。本記事ではよく聞く全文検索エンジンについて紹介していきます.
全文検索とは複数のドキュメントから特定の文字列を検索する技術です.
例えば以下の画像ように検索インターフェースに対してユーザが「東京のホテルを探したい」と入力するとします.
ユーザが入力した文字列はクエリと言います.
入力した文字列をテキスト解析し,分解します.分解した1つ1つの文字をタームと言います.
分解したタームを元に検索エンジンに保存されているドキュメントを探し出して,その結果をユーザにレスポンスします.
この処理の流れをクエリ処理と言います.
インデクサーとは
インデクサーとはWEB上に存在するウェブサイトなどの情報を収集し,収集したデータをインデックスとして検索エンジンに保存する役割をもつコンポーネントです.
以下の画像がインデクサーの役割の一例となります.
WEB上に存在するWEBサイトをクローラーが収集してきます.その収集したデータをindexerはキーワードやフレーズなどを解析して検索エンジンにindexとして保存する役割を持ちます.
Elasticsearch
Elasticsearchとは高速検索を可能とする,分散型の検索エンジンです.Elastic社が中心になって開発を行っています.Elasticsearchの特徴としては以下があります.
- スケーラブル
- 分散型であるため,大量のデータを並行して処理が可能
- 高可用性
ElasticsearchはECサイトを始めとした多くのプラットフォームで採用されています.多くのユーザを抱えていて大量の検索クエリを処理する必要がある場合で,非常に高いパフォーマンスを発揮します.
Elasticsearchの使用例
- メルカリ
- モノタロウ
- dely
まとめ
本記事では検索システムの基礎についてまとめてみました.まだまだ自分の知らないことが多いので改めて勉強をしていけたらと思いました.
参考文献