検索結果の精度を向上させる方法とは?
検索結果の精度を向上させるには、次の機能の Atlas Search サポートを使用します。
スコアのカスタマイズ
Atlas Search は、結果セット内のすべてのドキュメントにスコアを割り当て、関連性に基づいて評価し、スコアの高い順から低い順に結果を返します。詳細については、「結果内のドキュメントのスコア」を参照してください。
Atlas Searchクエリを実行する場合、最も関連性の高いドキュメントが上位にランク付けされ、返されるように、結果のドキュメントの関連性を調整できます。
詳細については、「結果のドキュメントのスコアをカスタマイズする方法」を参照してください。
ハイブリッド検索
ハイブリッド検索は、全文検索とセマンティック検索を組み合わせて、同義語やコンテキストが類似する一致を、同じクエリ内の同じ条件に対する両方の検索方法の結果に含めることを保証します。
以下のシナリオではハイブリッド検索を使用します。
Atlas Search (全文検索) を使用してキーワードクエリを処理し、ドキュメントおよびコレクションのドキュメント全体でキーワードが出現する頻度を測定して関連性に基づいてドキュメントをランク付けします。
Atlas Vector Search(セマンティック検索)を使用して、意味的に類似したドキュメントを検索します。
両方の検索方法のスコアを組み合わせて、より正確で関連性の高い結果を取得します。
詳しくは、「ハイブリッド検索の実行方法」を参照してください。
シノニム(同意語)検索
同義語検索により、検索キーワードがドキュメント内に正確に含まれていない場合でも、クエリ結果に関連性の高い結果が返されるようになります。
シノニム検索を実行するときは、インデックスを作成してクエリ時に適用したシノニム マッピングコレクションが使用されます。
詳しくは、「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 バージョン 6.0 以降を搭載した Atlas クラスター。
Atlas クラスターにロードされたサンプル データ。
Project Data Access Adminまたは、Atlas Searchインデックスを作成するためのAtlasプロジェクトへの高度アクセス。クラスターでクエリを実行するには、検索テスター、
mongosh、Compass、またはサポートされているMongoDBドライバーを使用します。
注意
Atlas Search クエリは $search 集計ステージを通じて任意のドライバーを使用して実行できます。ここで取りあげているチュートリアルにはさまざまなクライアントの例が含まれています。詳細については、該当するチュートリアル ページを参照してください。
Atlas CLI を使用して作成したローカル Atlas 配置で、これらのチュートリアルを完了することもできます。 詳細については、「 Atlas 配置のローカル配置の作成 」を参照してください。