MongoDB Searchとは
MongoDB Search は、関連性ベースのアプリ機能を構築するためのシームレスでスケーラブルなエクスペリエンスを提供し、データベースと並行して別の検索システムを実行する必要を排除します。
MongoDB Search を使用して、クラスター上のデータに対して、きめ細かなテキストインデックスを作成し、クエリを実行できます。MongoDB Search は、数種類のテキスト アナライザ、複雑な検索ロジックを作成するための豊富なクエリ言語、カスタマイズ可能なスコアベースの結果ランキング、オートコンプリート、ページ分割、ファセットなどのアプリケーション用の高度な検索機能を提供します。
ユースケース
MongoDB Search は、次のようなさまざまなユースケースをサポートしています。
入力しながら検索: ユーザーがアプリケーションの 検索フィールドに文字を入力するにつれて単語を予測する精度が向上するには、 MongoDB Search の オートコンプリート 演算子を使用して部分的な単語を予測して結果を返します。詳しくは、オートコンプリートおよび部分一致のMongoDB Search クエリの実行方法 を参照してください。
ファセット検索:アプリケーションのユーザーがフィルターを使用して検索結果を絞り込むには、 MongoDB Search
facet(MongoDB Search 演算子)コレクターを使用して、ファセット フィールドの値または範囲で結果をグループ化するファセットを構築できます。詳しくは、「 MongoDB Searchでファセットの使用方法 」を参照してください。ページに分けた結果: 結果のページをグループ化し、「次のページ」や「前のページ」などの関数を実装するには、 MongoDB Search
searchSequenceTokenをsearchAfterおよびsearchBeforeオプションとともに使用して、ページを順番に走査し、ページ間を移動できます。詳細については、「結果をページ分割する方法」を参照してください。
重要な概念
以下の概念はMongoDB Search の基礎を形成し、アプリケーションを最適化するために不可欠です。
検索クエリとは何ですか?
検索クエリは、検索インデックスを参照し、結果のセットを返します。検索クエリは、伝統的なデータベースのクエリと違い、より一般的な情報ニーズをみたします。データベースクエリは構文 に厳格に従う必要がある場合、単純なテキスト一致には検索クエリを使用できます。また、類似のフレーズ、数字、データ範囲、正規式、ワイルドカードを検索することもできます。
MongoDB Search queries take the form of an aggregation pipeline stage. MongoDB Search provides $search and $searchMeta stages, which you can use with other aggregation pipeline stages in your query pipeline. MongoDB Search provides query operators and collectors that you can use inside these aggregation pipeline stages.
詳細については、「クエリ & インデックス」を参照してください。
検索インデックスとは何ですか?
In the context of search, an index is a data structure that categorizes data in an easily searchable format. Search indexes enable faster retrieval of documents that contain a given term without having to scan the entire collection. While both MongoDB Search indexes and MongoDB Indexes make data retrieval faster, they differ. Like the index in the back of a book, a search index is a mapping between terms and the documents that contain those terms. Search indexes also contain other relevant metadata, such as the positions of terms in documents.
静的マッピングを使用して、単一または複数のフィールドでMongoDB Searchインデックスを作成できます。あるいは、動的マッピングを有効にして、ドキュメント内のすべての動的にインデックス付け可能なフィールドを自動的にインデックスこともできます。MongoDB Search インデックスは、多形データと埋め込みドキュメント、または入力しながら検索する検索やファセット検索などの特定のユースケースで作成できます。
詳細については、「サポートされているクライアント」を参照してください。
検索アナライザーとトークンとは何ですか?
検索インデックスを作成すると、Atlas Search はデータを一連のトークンまたはタームに変換します。アナライザ が次のようなステップを通じてこのプロセスを促進します。
トークン化: 文字列内の単語をインデックスを作成可能なトークンに分割します(空白や句読点で文章を分割するなど)。
正規化: テキストを小文字に変換したり、ストップワードと呼ばれる不要な単語を**除いたり**するなど、**コンシステント**な表現と簡単な分析のためにデータを整理します。
ステミング: 接尾辞、接頭辞、複数形の語形を無視して、単語を語幹形態まで縮小します。
トークン化の明細は言語に固有であり、追加の選択が必要になる場合があります。使用するアナライザは、データとアプリケーションによって異なります。
MongoDB Search にはいくつかの組み込みアナライザが用意されています。独自のカスタムアナライザを作成することもできます。マルチアナライザを使用して代替アナライザを指定できます。
詳細については、「アナライザによるデータ処理」を参照してください。
検索スコアとは何ですか?
クエリ結果内の各ドキュメントには、結果を関連性の高いものから低いものの順に並べ替えられる関連性スコアが与えられます。最も単純な形式のスコアリングでは、クエリタームがドキュメントに頻繁に表示される場合は高く、クエリタームがコレクション内の多数のドキュメントにわたり表示される場合は低くなります。関連性ベースのデフォルトスコアをブースト、減少、または変更することで、特定のドメインへの検索をカスタマイズすることもできます。
詳細については、「ドキュメントのスコアリング」を参照してください。
次のステップ
MongoDB Search インデックスの作成、およびサンプルデータに対してMongoDB Search クエリの実行中実践的な情報については、 MongoDB Search クイック スタート をお試しください。