Docs Menu
Docs Home
/ /

MongoDB Search インデックス

このガイドでは、 PHPライブラリを使用して、 MongoDB Search およびMongoDB ベクトル検索インデックスをプログラムで管理する方法を学習できます。

MongoDB Search 機能を使用すると、 MongoDB Atlasでホストされているコレクションに対して全文検索を実行できます。 MongoDB Search の詳細については、「 MongoDB Search の概要 」を参照してください。

MongoDB ベクトル検索 を使用すると、 MongoDB Atlasに保存されているベクトル埋め込みに対してセマンティック検索を実行できます。 MongoDB ベクトル検索の詳細については、「 MongoDB ベクトル検索 の概要 」を参照してください。

MongoDB\Collectionインスタンスでは次の方法を使用して、 MongoDB Search とMongoDB ベクトル検索インデックスを管理できます。

  • MongoDB\Collection::createSearchIndex()

  • MongoDB\Collection::createSearchIndexes()

  • MongoDB\Collection::listSearchIndexes()

  • MongoDB\Collection::updateSearchIndex()

  • MongoDB\Collection::dropSearchIndex()

注意

MongoDB Search とMongoDB ベクトル検索 のインデックス管理は非同期

MongoDB PHPライブラリは、 MongoDB Search インデックスとMongoDB ベクトル検索インデックスを非同期に管理します。次のセクションで説明されているライブラリ メソッドは、サーバー応答をすぐに返しますが、検索インデックスへの変更はバックグラウンドで行われ、しばらくが完了しないと完了しない可能性があります。

次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。

createSearchIndex() メソッドを使用して、単一のMongoDB Search またはMongoDB ベクトル検索インデックスをコレクションに作成するか、createSearchIndexes() メソッドを使用して複数のインデックスを同時に作成します。

次のコード例は、 MongoDB Searchインデックスを 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 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',
]],
],
],
],
);

MongoDB Search またはMongoDB ベクトル検索インデックスを作成したら、ドキュメントに対して対応するクエリタイプを実行できます。詳しくは、次のガイドを参照してください。

  • 「MongoDB Search クエリの実行」ガイドを実行する

  • 「MongoDB ベクトル検索クエリの実行」ガイド

listSearchIndexes() メソッドを使用して、コレクションのMongoDB Search インデックスと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 Search またはMongoDB ベクトル検索インデックスをコレクションから削除できます。

次のコードは、mySearchIdx という名前のMongoDB Searchインデックスを削除する方法を示しています。

$collection->dropSearchIndex('mySearchIdx');

インデックスの管理方法を示す実行可能な例を表示するには、クエリを最適化するためのインデックスを参照してください。

MongoDB Search 機能の使用方法を説明するチュートリアルを表示するには、Atlas ドキュメントの「 MongoDB Search を使い始める 」を参照してください。

このガイドで説明されているメソッドの詳細については、次の API ドキュメントを参照してください。

戻る

Multikey Indexes

項目一覧