Atlas Search インデックス
Overview
このガイドでは、 PHPライブラリを使用して、Atlas Search および Atlas ベクトル検索インデックスをプログラムで管理する方法を学習できます。
Atlas Search 機能を使用すると、 MongoDB Atlasでホストされているコレクションに対して全文検索を実行できます。 Atlas Search の詳細については、「 Atlas Search の概要 」を参照してください。
Atlas ベクトル検索と、 MongoDB Atlasに保存されているベクトル埋め込みに対してセマンティック検索を実行できます。 Atlas ベクトル検索 の詳細については、「 Atlas ベクトル検索 の概要 」を参照してください。
MongoDB\Collection
インスタンスでは次の方法を使用して、Atlas Search インデックスとベクトル検索インデックスを管理できます。
MongoDB\Collection::createSearchIndex()
MongoDB\Collection::createSearchIndexes()
MongoDB\Collection::listSearchIndexes()
MongoDB\Collection::updateSearchIndex()
MongoDB\Collection::dropSearchIndex()
注意
Atlas Search とベクトル検索 のインデックス管理は非同期
MongoDB PHPライブラリは、Atlas Search インデックスとベクトル検索インデックスを非同期に管理します。次のセクションで説明されているライブラリ メソッドは、サーバー応答をすぐに返しますが、検索インデックスへの変更はバックグラウンドで行われ、しばらくが完了しないと完了しない可能性があります。
次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。
検索インデックスを作成
createSearchIndex()
メソッドを使用して、コレクションに単一の Atlas Search またはベクトル検索インデックスを作成するか、createSearchIndexes()
メソッドを使用して複数のインデックスを同時に作成できます。
次のコード例は、Atlas Search インデックスを1つ作成する方法を示しています。
$searchIndexName = $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => 'mySearchIdx'] );
次のコード例は、単一の Atlas ベクトル検索インデックスを作成する方法を示しています。
$vectorSearchIndexName = $collection->createSearchIndex( [ 'fields' => [[ 'type' => 'vector', 'path' => 'plot_embedding', 'numDimensions' => 1536, 'similarity' => 'dotProduct' ]] ], ['name' => 'myVSidx', 'type' => 'vectorSearch'] );
次のコード例は、1 回の呼び出しで Atlas Search インデックスと Vector Search インデックスを作成する方法を示しています。
$indexNames = $collection->createSearchIndexes( [ [ 'name' => 'SearchIdx', 'definition' => ['mappings' => ['dynamic' => true]], ], [ 'name' => 'VSidx', 'type' => 'vectorSearch', 'definition' => [ 'fields' => [[ 'type' => 'vector', 'path' => 'plot_embedding', 'numDimensions' => 1536, 'similarity' => 'dotProduct' ]] ], ], ] );
Atlas Search または Atlas ベクトル検索インデックスを作成したら、ドキュメントに対して対応するクエリタイプを実行できます。詳しくは、次のガイドを参照してください。
Atlas Search guide
Atlas ベクトル検索ガイド
検索インデックスをリストする
listSearchIndexes()
メソッドを使用して、コレクションの Atlas Search インデックスとベクトル検索インデックスの配列を返すことができます。
foreach ($collection->listSearchIndexes() as $indexInfo) { echo json_encode($indexInfo), PHP_EOL; }
検索インデックスをアップデートする
updateSearchIndex()
メソッドを使用して、Atlas Search またはベクトル検索インデックスを更新できます。このメソッドを使用して、既存のインデックスの名前または構成を変更できます。
次のコードは、title
フィールドのシンプルなアナライザーを使用して検索インデックスを更新する方法を示しています。
$collection->updateSearchIndex( 'mySearchIdx', ['mappings' => [ 'dynamic' => false, 'fields' => [ 'title' => [ 'type' => 'string', 'analyzer' => 'lucene.simple' ] ] ]] );
検索インデックスを削除する
dropSearchIndex()
メソッドを使用して、 Atlas Search またはベクトル検索インデックスをコレクションから削除できます。
次のコードは、mySearchIdx
という Atlas Search インデックスを削除する方法を示しています。
$collection->dropSearchIndex('mySearchIdx');
詳細情報
インデックスを管理する方法を示す実行可能な例については、「 インデックスを使用してクエリを最適化する 」を参照してください。
Atlas 検索機能の使用方法を説明するチュートリアルを表示するには、Atlas ドキュメントの「Atlas Search スタートガイド」を参照してください。
API ドキュメント
このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。