Overview
このガイドでは、PHP ライブラリを使用して、Atlas Search インデックスおよび Atlas Vector Search インデックスをプログラムで管理する方法を学ぶことができます。
Atlas Search 機能を使うと、MongoDB Atlas でホストされているコレクションを全文検索できます。Atlas Search の詳細については、「 Atlas Search の概要」を参照してください。
Atlas Vector Search を使用すると、MongoDB Atlas に保存されているベクトル埋め込みに対してセマンティック検索を実行できます。Atlas Vector Search の詳細については、「Atlas Vector Search の概要」を参照してください。
MongoDB\Collection
インスタンスでは、次のメソッドを使用して、Atlas Search インデックスと Atlas Vector Search インデックスを管理できます。
MongoDB\Collection::createSearchIndex()
MongoDB\Collection::createSearchIndexes()
MongoDB\Collection::listSearchIndexes()
MongoDB\Collection::updateSearchIndex()
MongoDB\Collection::dropSearchIndex()
注意
Atlas Search と Atlas Vector Search インデックス マネジメントは非同期です。
MongoDB PHPライブラリは、Atlas Search インデックスおよび Atlas Vector Search インデックスを非同期で管理します。次のセクションで説明するライブラリメソッドは、サーバーの応答をすぐに返しますが、検索インデックスの変更はバックグラウンドで行われ、完了までにしばらく時間がかかることがあります。
次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。
検索インデックスを作成
createSearchIndex()
メソッドを使用して、コレクションに単一の Atlas Search インデックスまたは Atlas Vector Search インデックスを作成するか、createSearchIndexes()
メソッドを使用して複数のインデックスを同時に作成することもできます。
次のコード例は、Atlas Search インデックスを1つ作成する方法を示しています。
$searchIndexName = $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => 'mySearchIdx'], );
次のコード例は、単一の Atlas Vector Search インデックスを作成する方法を示しています。
$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 Vector Search インデックスを作成したら、ドキュメントに対して対応するクエリ タイプを実行できます。詳細については、以下のガイドを参照してください。
検索インデックスをリストする
listSearchIndexes()
メソッドを使用して、コレクションの Atlas Search インデックスおよび Atlas Vector 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 インデックスまたは Atlas Vector Search インデックスを削除できます。
次のコードは、mySearchIdx
という Atlas Search インデックスを削除する方法を示しています。
$collection->dropSearchIndex('mySearchIdx');
詳細情報
インデックスを管理する方法を示す実行可能な例については、「 クエリ最適化のインデックス 」を参照してください。
Atlas 検索機能の使用方法を説明するチュートリアルを表示するには、Atlas ドキュメントの「Atlas Search スタートガイド」を参照してください。
API ドキュメント
このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。