Atlas Search の概要
MongoDB の Atlas Search を使用すると、Atlas クラスター上のデータに対して、きめ細かなテキストインデックスを作成し、クエリを実行できます。データベースとは別の検索システムや追加のマネジメントを必要とせずに、お使いのアプリケーションで、高度な検索機能を利用できるようになります。Atlas Search は、数種類のテキスト アナライザ、$search
や $searchMeta
などの Atlas Search 集計パイプライン ステージを MongoDB の他の集計パイプライン ステージと組み合わせて使用する豊富なクエリ言語、スコアベースの結果ランキングのオプションを提供します。
Tip
Atlas Search Playground を使用すると、Atlas アカウント、クラスター、コレクションを必要とせずに、Atlas Search をすぐに試すことができます。詳細については、ドキュメントを参照してください。
Atlas Search の基礎
以下の概念はAtlas Search の基礎を形成し、アプリケーションを最適化するために不可欠です。
インデックスの作成
インデックスとは、検索で使用する場合、簡単に検索可能な形式でデータを分類するデータ構造です。検索インデックスを利用すると、コレクション全体をスキャンする必要なしに、指定タームを含むドキュメントをすばやく取得できます。Atlas Search インデックスと MongoDB インデックス はいずれもデータの取得を迅速化しますが、同じものではないことに注意してください。検索インデックスは、本の末尾の索引のようにタームとそのタームを含むドキュメントを紐付けします。検索インデックスには、ドキュメント内のタームの位置付けなど、他の関連メタデータも含まれます。
通常、どの検索アプリケーションでも、少なくとも 1 つの検索インデックスを作成する必要があります。 詳細については、「 Atlas Search インデックスの作成と管理 」を参照してください。
トークン化
検索インデックスを作成する際は、データをまず一連のトークンまたはタームに変換する必要があります。アナライザが次のようなステップを通じてこのプロセスを促進します。
トークン化: 文字列内の単語をインデックスを作成可能なトークンに分割します。たとえば、空白と句読点で文章を区切ります。
正規化: 表現を一貫させ、簡単に分析できるようにデータを整理します。たとえば、テキストを小文字に変換したり、ストップワードと呼ばれる不要な単語を削除したりします。
ステミング: 単語を語幹形態まで縮小します。たとえば、接尾辞、接頭辞、複数形の語形を無視します。
トークン化の明細は言語に固有であり、追加の選択が必要になる場合があります。使用するアナライザは、データとアプリケーションによって異なります。詳細については、「アナライザによるデータ処理」を参照してください。
クエリ
検索クエリはインデックスを参照し、結果のセットを返します。検索クエリは伝統的なデータベースのクエリと違い、より一般的な情報ニーズをみたすことを目的とします。データベース クエリは構文に厳格に従う必要があるのに対し、検索クエリは単純にテキスト一致を検索します。ただし、類似のフレーズ、数字、データ範囲を検索したり、正規表現やワイルドカードを使用したりすることもできます。
詳細については、「 Atlas Search クエリの作成と実行 」を参照してください。
スコアリング
各ドキュメントに関連性スコアを付けると、クエリ結果が関連性の高いものから低いものへと順番に返されるようになります。最も単純な形式のスコアリングでは、クエリ用語がドキュメントに頻繁に表示される場合は高く、クエリ用語がコレクション内の多数のドキュメントにわたり表示される場合は低くなります。スコアリングはカスタマイズも可能です。多くの場合、特定分野に合わせて検索を調整するには、関連性ベースのデフォルトスコアを boost、decay、その他の変更関数を用いてカスタマイズすることになります。
詳細については、「スコアのドキュメント」を参照してください。
Atlas Search のアーキテクチャ
Apache Lucene 上に構築された Atlas Searchmongot
プロセス は、mongod
データベース プロセスとのインターフェースを使用して、全文検索インデックスとベクトル検索インデックスとクエリを作成および管理します。
mongot
プロセスについて
mongot
プロセスは次のタスクを実行します。
コレクションのインデックス定義のルールに基づいて Atlas Search インデックスを作成します。
インデックスを定義したコレクションのドキュメントとインデックスの現在の状態に関する 変更ストリームAtlas Search をモニターします。
Atlas Search クエリを処理し、一致するドキュメントのドキュメント ID とその他の検索メタデータを
mongod
に返します。その後、ドキュメント全体が検索され、その結果がクライアントに返されます。
Atlas Search mongot
プロセスが Atlas クラスター内の各ノードでmongod
プロセスと並行して実行される配置モデルを選択できます。または、 mongot
プロセスが別々の検索ノードで実行される配置モデルを選択できます。 検索クエリをテストし、アプリケーションのプロトタイプを作成する場合は、 プロセスと プロセスの両方が同じノードで実行されるデフォルトの配置モデルを選択できます。mongot
mongod
ただし、本番環境に対応するアプリケーションの場合は、本番環境でmongot
プロセスと プロセス間のリソース競合を回避するために、個別の検索ノードにmongot
mongod
を配置します。
本番環境と本番環境の配置タイプの選択に関するガイダンスは、「 Atlas Search 配置オプション 」および「 Atlas Vector Search 配置オプション 」を参照してください。