精度を向上します。
検索結果の精度を向上させるにはどうすればよいですか。
検索結果の精度を向上させるには、次の機能の Atlas Search サポートを使用します。
スコアをカスタマイズします
Atlas Search は関連性に基づいて結果セット内の各ドキュメントにスコアを割り当て、最高スコアから最低スコアの順に結果を返します。詳しくは、「 結果のドキュメントにスコアを付ける 」を参照してください。
Atlas Search クエリを実行すると、結果内のドキュメントの関連性を調整して、最も関連するドキュメントがランク付けされ、結果が上位に返されるようになります。
詳細については、「結果内のドキュメントのスコアをカスタマイズする方法」を参照してください。
ハイブリッド検索
ハイブリッド検索は、全文検索とセマンティック検索を組み合わせて使用することで、シノニムとコンテキストが類似する一致が、同じクエリ内の同じ条件の両方の検索方法の合計結果に含まれるようになります。
次のシナリオではハイブリッド検索を使用します。
Atlas Search (全文検索)を使用して、ドキュメント内およびコレクション内のドキュメント全体にキーワードが表示される頻度を測定し、関連性に基づいてキーワード クエリとドキュメントをランク付けします。
Atlas ベクトル検索 (セマンティック検索) を使用して、セマンティックに類似したドキュメントを検索します。
両方の検索方法のスコアを組み合わせて、より正確で関連性の高い結果を検索します。
詳しくは、「ハイブリッド検索の実行方法」を参照してください。
シノニム(同意語)検索
シノニム(同意語)検索により、検索するドキュメントに正確なキーワードが存在しない場合でも、クエリ結果には関連する結果が含まれるようになります。
シノニム検索を実行するときは、インデックスを作成してクエリ時に適用したシノニム マッピングコレクションが使用されます。
詳しくは、「Atlas Search インデックスでのシノニム マッピングの定義」を参照してください。
検索を説明する
MongoDB explain
は、クエリの実行方法と特定のドキュメントが他のドキュメントよりも優先される理由に関する情報を提供します。
クエリで explain
を使用するのは、次の理由です。
Atlas Search が検索クエリのスコアと、結果内のドキュメントの関連性に影響する要因を計算する方法を理解します。
検索とランキングのパフォーマンスに基づいて、インデックスとクエリを改善します。
詳細については、「クエリプランと実行統計を取得する方法」を参照してください。
検索結果の関連性を高めるにはどうすればよいですか。
Atlas Search で関連性を調整すると、より関連性の高いドキュメントが Atlas Search クエリ結果に返されるようになります。 Atlas Search 結果の関連性を最適化するには、以下の点を考慮します。
データを評価する
検索に最適な結果を返すようにデータを構造化して形式には、次の手順に従います。
ドキュメントのスキーマを確認して、どのフィールドがインデックスするかを決定します。多形データの場合、Atlas Search は、そのフィールドのインデックス定義で指定されたマッピングに対応するドキュメントのみをインデックス化し、そのフィールドのインデックス定義で指定されたデータ型ではない値を含むドキュメントを無視します。サポートされているフィールドタイプとフィールドマッピングの詳細については、「 フィールドマッピングの定義 」を参照してください。
必要に応じてデータを正規化して、フィルタリングとソートで使用されるフィールドの整合性を確保します。例、日付と時刻の値を ISO-8601 などの標準形式に変換します。
キー フィールド内の一般的なタームの頻度を分析して、適用するアナライザとトークン化戦略を決定します。一部のタームでは、ステミングやシノニム(同意語)マッピングなどの特別な処理が必要になる場合があります。 Atlas Search アナライザを使用してデータのトークンを作成する方法の詳細については、「 アナライザによるデータ処理 」を参照してください。
データと増やすのプランを分析します。大規模なデータセットには、戦略的なインデックスとパーティショニングが必要になる場合があります。
Atlas Search インデックスの構成
検索に最適な結果を返すように Atlas Searchインデックスを構成するには次の手順に従います。
インデックスする各フィールドに適切なアナライザを選択します。アナライザはフィルターと トークナイザ を組み合わせて、句読点、大文字、埋め込み単語などにおける差異を修正する索引可能なタームを作成します。組み込みアナライザ または カスタムアナライザ を選択できます。詳細については、「 アナライザによるデータ処理 」を参照してください。
ソース シノニムコレクションを作成し、Atlas Searchインデックスのシノニム ソースコレクションを参照シノニム マッピングを定義します。シノニム(同意語) を使用すると、検索の範囲が拡大し、結果内に関連するタームが返されます。詳しくは、「 Atlas Search インデックスでのシノニム マッピングの定義 」を参照してください。
Atlas Search クエリの定義
最適な結果を返すようにクエリを構築するには、次の手順に従います。
適切な集計パイプラインステージを選択します。例、メタデータのみを取得する場合は、
$searchMeta
を使用します。詳細については、「 パイプライン ステージ 」を参照してください。関連する結果を検索するのに最適な演算子を選択してください。例、クエリで
must
、should
、mustnot
などの複数の句を組み合わせたい場合は、複合を検討します。詳細については、「演算子とコレクター」を参照してください。並べ替え、スコアリング、グループ化などの Atlas Search サポートを使用して、検索結果にさらにプロセスを適用します。
前提条件
チュートリアルを完了するには、以下が必要です。
MongoDB バージョン 4.2 以降を搭載した Atlas クラスター。
Atlas クラスターにロードされたサンプル データ。
Project Data Access Admin
以上のプロジェクト権が付与された場合、Atlas Search インデックスを作成します。テスター、
mongosh
、Compass、またはサポートされているMongoDBドライバーを使用して、クラスターでクエリを実行します。
注意
$search
集計ステージでは任意のドライバーを使用して Atlas Search クエリを実行できます。これらのチュートリアルには、選択したクライアント向けの例が含まれています。詳細については、特定のチュートリアル ページを参照してください。
Atlas CLI を使用して作成したローカル Atlas 配置で、これらのチュートリアルを完了することもできます。 詳細については、「 Atlas 配置のローカル配置の作成 」を参照してください。