Atlas Search とは?
Atlas Search は、組み込み型の全文検索機能であり、関連性に基づいたアプリ機能をシームレスかつスケーラブルに構築できる環境を提供します。これにより、データベースとは別に検索システムを運用する必要がなくなります。
Atlas Search を使用すると、クラスタ上のデータに対してきめ細かなテキストのインデックス作成とクエリ実行が可能になります。Atlas Search は、複数の種類の テキスト アナライザ、複雑な検索ロジックを構築できる豊富なクエリ言語、スコアに基づく結果のカスタマイズ可能なランキング機能、そしてオート コンプリート、ページネーション、ファセット検索などの高度な検索機能をアプリケーションに提供します。
ユースケース
Atlas Search は、以下のような多様なユースケースをサポートしています。
入力しながら検索: ユーザーがアプリケーションの 検索フィールドに文字を入力するにつれて単語を予測する精度が向上するには、Atlas Search 演算子
autocomplete
を使用して部分的な単語を予測し、結果を返すことができます。詳細については、「 オートコンプリートおよび部分一致 Atlas Search クエリの実行方法 」を参照してください。ファセット検索 : アプリケーションのユーザーがフィルターを使って検索結果を絞り込めるようにするには、Atlas Search の facet コレクターを使用して、ファセットフィールドの値や範囲ごとに結果をグループ化するファセットを構築します。詳しくは、「Atlas Search でファセットを使用する方法」を参照してください。
ページネーションされた結果: 結果のページをグループ化し、「次のページ」や「前のページ」のような機能を実装するには、Atlas Search
searchSequenceToken
、searchAfter
、およびsearchBefore
オプションを使用すると、ページを順番に移動したり、ページをまたいでジャンプしたりできます。詳細については、「結果をページ分割する方法」を参照してください。
重要な概念
以下の概念はAtlas Search の基礎を形成し、アプリケーションを最適化するために不可欠です。
検索クエリとは何ですか?
検索クエリは、検索インデックスを参照して結果のセットを返します。検索クエリは、一般的な情報ニーズに応えることを目的としており、従来のデータベース クエリとは異なります。データベース クエリが厳密な構文に従う必要があるのに対し、検索クエリは単純なテキスト マッチに加えて、類似表現の検索、数値や日付の範囲指定、正規表現やワイルドカードの使用も可能です。
Atlas Search クエリは、 集計パイプライン ステージの形式をとります。Atlas Search は、$search
ステージと $searchMeta
ステージを提供しており、クエリ パイプライン内で他の 集計パイプライン ステージ と組み合わせて使用できます。Atlas Search は、これらの集計パイプライン ステージ内で使用できるクエリ演算子とコレクターを提供します。
詳細については、「クエリ & インデックス」を参照してください。
検索インデックスとは何ですか?
インデックスとは、検索で使用する場合、簡単に検索可能な形式でデータを分類するデータ構造です。検索インデックスを利用すると、コレクション全体をスキャンする必要なしに、指定タームを含むドキュメントをすばやく取得できます。Atlas Search インデックスと MongoDB インデックス はいずれもデータの取得を迅速化しますが、同じものではないことに注意してください。検索インデックスは、本の末尾の索引のようにタームとそのタームを含むドキュメントを紐付けします。検索インデックスには、ドキュメント内のタームの位置付けなど、他の関連メタデータも含まれます。
静的マッピングを使用することで、1 つのフィールドまたは複数のフィールドに対して Atlas Search インデックスを作成できます。または、動的マッピング を有効にすることで、ドキュメント内の動的にインデックス可能なすべてのフィールドを自動的にインデックス化することも可能です。Atlas Search インデックスは、多態的データや埋め込みドキュメントに対して作成でき、入力中の検索(Search-as-you-type)やファセット検索など、特定のユースケースにも対応しています。
詳しくは、「Atlas Search インデックスの管理」を参照してください。
検索アナライザーとトークンとは何ですか?
検索インデックスを作成する際は、データをまず一連のトークンまたはタームに変換する必要があります。アナライザが次のようなステップを通じてこのプロセスを促進します。
トークン化: 文字列内の単語をインデックスを作成可能なトークンに分割します。たとえば、空白と句読点で文章を区切ります。
正規化: 表現を一貫させ、簡単に分析できるようにデータを整理します。たとえば、テキストを小文字に変換したり、ストップワードと呼ばれる不要な単語を削除したりします。
ステミング: 単語を語幹形態まで縮小します。たとえば、接尾辞、接頭辞、複数形の語形を無視します。
トークン化の明細は言語に固有であり、追加の選択が必要になる場合があります。使用するアナライザは、データとアプリケーションによって異なります。
Atlas Search には、いくつかの組み込みのアナライザが用意されています。また、独自のカスタムアナライザを作成することも可能です。multi アナライザを使用して、別のアナライザを指定することもできます。
詳細については、「アナライザによるデータ処理」を参照してください。
検索スコアとは何ですか?
クエリ結果に含まれる各ドキュメントには関連度スコアが付与され、このスコアに基づいて最も関連性の高いものから順に結果が返されます。最も基本的なスコアリングでは、クエリ語句がドキュメント内に頻繁に出現するほどスコアが高くなり、コレクション内の多数のドキュメントに登場する場合はスコアが低くなります。スコアリングはカスタマイズすることも可能です。特定のドメインに検索を最適化するには、スコアをブースト(増加)させたり、減衰させたり、他の方法で調整したりして、関連度ベースのデフォルト スコアをカスタマイズすることが一般的です。
詳細については、「ドキュメントのスコアリング」を参照してください。
次のステップ
Atlas Search のインデックス作成やクエリ実行を実際に試すには、『Atlas Search クイックスタート』をご覧ください。