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