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