Docs Menu
Docs Home
/ / /
Lambda MongoDB
/

Atlas Search

このガイドでは、Atlas Search 機能を使用してドキュメントを検索する方法を学習できます。Laravel MongoDB は、モデルを使用して Atlas Search クエリを直接実行するための API を提供します。このガイドでは、Atlas Search インデックスの作成方法と、Laravel 統合を使用して検索を実行する方法の例を示します。

注意

配置の互換性

Atlas Search 機能は、MongoDB Atlasクラスターに接続する場合にのみ使用できます。この機能は、自己管理型の配置では使用できません。

Atlas Search の詳細については、Atlas ドキュメントの「概要」をご覧ください。Atlas Search API は内部で $search 集計演算子を使用してクエリを実行します。この演算子の詳細については、Atlas ドキュメントの $search リファレンスを参照してください。

注意

このガイドで説明されているメソッドは、すべてのタイプの Atlas Search クエリに使用できない可能性があります。より複雑なユースケースの場合は、集計ビルダを使用して集計パイプラインを作成してください。

MongoDB でベクトル埋め込みを検索するには、Laravel MongoDB Atlas Vector Search API を使用できます。この機能の詳細については、Atlas Vector Search のガイドを参照してください。

Atlas Searchインデックスは、次のいずれかの方法で作成できます。

  • Schema ファサードで create() メソッドを呼び出し、インデックス作成の詳細を含む searchIndex()ヘルパーメソッドを渡します。この戦略の詳細については、 スキーマ ビルダガイドの「Atlas Search とベクトル検索インデックスの管理」セクションを参照してください。

  • コレクションにアクセスしてから、次のコードに示すように、MongoDB PHP ライブラリからcreateSearchIndex()メソッドを呼び出します。

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex(
    ['mappings' => ['dynamic' => true]],
    ['name' => 'search_index']
    );

このセクションでは、Laravel 統合で Atlas Search API を使用する方法を学習できます。

Laravel 統合は、search() メソッドをクエリ ビルダ メソッドおよび Eloquent モデル メソッドとして提供します。search() メソッドを使用して、コレクション内のドキュメントに対して Atlas Search クエリを実行できます。

SearchOperatorInterface のインスタンス、または演算子タイプ、フィールド名、クエリ値を含む配列である search() メソッドには、operator パラメータを渡す必要があります。Search::text() メソッドを呼び出し、検索するフィールドと検索用語またはフレーズを渡すことで、SearchOperatorInterface のインスタンスを作成できます。

SearchOperatorInterface インスタンスを作成するためには、アプリケーションに次のインポート ステートメントを含める必要があります。

use MongoDB\Builder\Search;

次のコードは、Movie モデルの title フィールドで 'dream' という用語を検索するために Atlas Search クエリを実行します。

$movies = Movie::search(
sort: ['title' => 1],
operator: Search::text('title', 'dream'),
)->all();
[
{ "title": "Dreaming of Jakarta",
"year": 1990
},
{ "title": "See You in My Dreams",
"year": 1996
}
]

search()メソッドを使用して、さまざまな種類の Atlas Search クエリを実行できます。目的のクエリに応じて、次の任意のパラメーターを search() に渡すことができます。

任意のパラメーター
タイプ
説明

index

string

使用する Atlas Search インデックスの名前を指定します

highlight

array

元のコンテキストで検索タームを表示するためのハイライトオプションを指定します

concurrent

bool

専用の検索ノード上でセグメント間の検索クエリを並列化します

count

string

結果の数を取得するためのカウント オプションを指定します。

searchAfter

string

その点の直後から始まるドキュメントを返すための参照点を指定します。

searchBefore

string

その点の直前から始まるドキュメントを返すための参照点を指定します。

scoreDetails

bool

結果のスコアの詳細な内訳を検索するかどうかを指定します

sort

array

結果をソートするフィールドを指定します

returnStoredSource

bool

バックエンド データベースで完全なドキュメント検索を実行するか、Atlas Search から保存されたソースフィールドのみを直接返すかを指定します

tracking

array

検索タームに関する分析情報を検索するための追跡オプションを指定します

これらのパラメータの詳細については、Atlas ドキュメントの $search 演算子参照の「フィールド」セクションを参照してください。

Laravel 統合は、autocomplete() メソッドをクエリ ビルダ メソッドおよび Eloquent モデル メソッドとして提供します。autocomplete() メソッドを使用して、コレクション内のドキュメントに対してオートコンプリート検索を実行できます。このメソッドは、クエリ パスとして指定したフィールドの値のみを返します。

このタイプの Atlas Search クエリの詳細については、Atlas ドキュメントの「オートコンプリート リファレンス」を参照してください。

注意

オートコンプリート検索を実行する前に、コレクションにオートコンプリート設定を用いて、Atlas Search インデックスを作成する必要があります。このガイドの「Atlas Search インデックスの作成」セクションを参照して、検索インデックスの作成について詳しくご確認ください。

次のコードで、title フィールドの "jak" という文字列に対して Atlas Search のオートコンプリートクエリが実行されます。

$movies = Movie::autocomplete('title', 'jak')->all();
[
"Dreaming of Jakarta",
"Jakob the Liar",
"Emily Calling Jake"
]

クエリをカスタマイズするために、次の任意のパラメーターを autocomplete() メソッドに渡すこともできます。

任意のパラメーター
タイプ
説明
デフォルト値

fuzzy

bool or array

ファジー検索とファジー検索オプションを有効にします

false

tokenOrder

string

トークンを検索する順序を指定します

'any'

これらのパラメーターの詳細については、Atlas ドキュメントの autocomplete 演算子リファレンスの「オプション」セクションを参照してください。

戻る

集計ビルダー

項目一覧

  • Overview
  • Atlas Search インデックスの作成
  • クエリの実行
  • 一般的なクエリ
  • オートコンプリートクエリ