検索結果の精度を向上させる方法とは?
検索結果の精度を向上させるには、次の機能のMongoDB Search サポートを使用します。
スコアのカスタマイズ
MongoDB Search は、関連性に基づいて結果セット内の各ドキュメントにスコアを割り当て、最高スコアから最低スコアの順に結果を返します。詳細については、「結果内のドキュメントにスコアを付ける」を参照してください。
MongoDB Search クエリを実行するときに、結果内のドキュメントの関連性を調整して、最も関連するドキュメントがランク付けされ、結果の上位に返されるようにすることができます。
詳細については、「結果のドキュメントのスコアをカスタマイズする」を参照してください。
ハイブリッド検索
ハイブリッド検索は、全文検索とセマンティック検索を組み合わせて、同義語やコンテキストが類似する一致を、同じクエリ内の同じ条件に対する両方の検索方法の結果に含めることを保証します。
以下のシナリオではハイブリッド検索を使用します。
MongoDB Search(全文検索)を使用して、ドキュメント内およびコレクション内のドキュメント全体にキーワードが表示される頻度を測定し、関連性に基づいてキーワード クエリとドキュメントをランク付けします。
MongoDB ベクトル検索 (セマンティック検索)を使用して、セマンティックで類似したドキュメントを検索します。
両方の検索方法のスコアを組み合わせて、より正確で関連性の高い結果を取得します。
詳しくは、「ハイブリッド検索の実行方法」を参照してください。
ネイティブ再ランク付け
Native Reranking reorders $search results by running the top N documents and query through Voyage AI reranking models to provide more accurate relevancy scores.
To learn more, see $rerank Aggregation Pipeline Stage.
シノニム(同意語)検索
同義語検索により、検索キーワードがドキュメント内に正確に含まれていない場合でも、クエリ結果に関連性の高い結果が返されるようになります。
シノニム検索を実行すると、インデックス付きのシノニム マッピング コレクションが適用されます。
詳しくは、「MongoDB Search インデックスでのシノニム マッピングの定義」を参照してください。
検索内容を説明してください
MongoDB explain では、クエリの実行方法と特定のドキュメントが他のドキュメントよりも優先される理由に関する情報が提供されます。
クエリでexplainを使用する理由は次のとおりです。
MongoDB Search が検索クエリのスコアと、結果内のドキュメントの関連性に影響する要因を計算する方法を理解します。
検索とランキングのパフォーマンスに基づいて、インデックスとクエリを改善してください。
詳細については、クエリプランと実行統計を取得する方法 を参照してください。
検索結果の関連性を向上させる方法とは?
MongoDB Search で関連性を調整すると、より関連性の高いドキュメントがMongoDB Search クエリ結果に返されるようになります。MongoDB Search 結果の関連性を最適化するには、以下の点を考慮します。
データを評価する
次の方法で検索で最適な結果を返すためにデータを構造化および形式化します。
ドキュメントのスキーマを検討して、インデックスするフィールドを決定します。多形データの場合、MongoDB Search は、そのフィールドのインデックス定義で指定されたマッピングに対応するドキュメントのみをインデックス化し、そのフィールドのインデックス定義で指定されたデータ型ではない値を含むドキュメントを無視します。サポートされているフィールドタイプとフィールドマッピングの詳細については、「MongoDB Search インデックスのフィールドマッピングの定義」を参照してください。
フィルタリングおよびソートに使用されるフィールドの整合性を確保するために、必要に応じてデータを正規化してください。例えば、日付と時刻の値を ISO-8601 などの標準形式に変換してください。
キー フィールド内の一般的なタームの頻度を分析して、適用するアナライザとトークン化戦略を決定します。一部のタームでは、ステミングやシノニム(同意語)マッピングなどの特別な処理が必要になる場合があります。MongoDB Search アナライザを使用してデータのトークンを作成する方法の詳細については、アナライザによるデータ処理 を参照してください。
データ量を分析してスケーリングを計画します。大規模なデータセットには、戦略的なインデックスの作成とパーティショニングが必要になる場合があります。
MongoDB Search インデックスを構成する
検索に最適な結果を返すようにMongoDB Searchインデックスを構成するには次の手順に従います。
インデックスする各フィールドに適切なアナライザを選択します。アナライザはフィルターと トークナイザ を組み合わせて、句読点、大文字、埋め込み単語などにおける差異を修正する索引可能なタームを作成します。組み込みアナライザ または カスタムアナライザ を選択できます。詳細については、アナライザによるデータ処理を参照してください。
ソース シノニムコレクションを作成し、 MongoDB Searchインデックスのシノニム ソースコレクションを参照シノニム マッピングを定義します。シノニム(同意語) を使用すると、検索の範囲が拡大し、結果内に関連するタームが返されます。詳しくは、「MongoDB Search インデックスでのシノニム マッピングの定義」を参照してください。
MongoDB Search クエリの定義
以下の方法で、最良の結果を返すクエリをビルドします。
適切な集計パイプライン ステージを選択します。たとえば、メタデータのみを検索する場合は、
$searchMetaを使用します。詳細については、「パイプライン ステージ」を参照してください。
前提条件
チュートリアルを完了するには、以下が必要です。
MongoDB バージョン 6.0 以降の Atlas クラスター、または MongoDB バージョン 8.2 以降の MongoDB 自己管理型クラスター。
The sample data loaded into your cluster.
Project Data Access Admin以上のアクセス権を持つプロジェクトへのアクセス権を付与して、 MongoDB Search インデックスを作成します。Search Tester,
mongosh, Compass, or a supported MongoDB Driver to run queries on your cluster.
注意
MongoDB Search クエリは、$search 集計ステージで任意のドライバーを使用して実行できます。これらのチュートリアルには、選択したクライアント向けの例が含まれています。詳細については、特定のチュートリアル ページを参照してください。
これらのチュートリアルは、Atlas CLI を使用して作成したローカル配置、またはオンプレミス配置で完了することもできます。詳しくは、ローカル Atlas 配置の作成 と 自己管理型配置の作成 を参照してください。