Docs 菜单
Docs 主页
/ /

MongoDB搜索索引

在本指南中,您可以学习;了解如何使用PHP库以编程方式管理MongoDB Search 和MongoDB Vector Search 索引。

MongoDB搜索功能使您能够对MongoDB Atlas上托管的集合执行全文搜索。要学习;了解有关MongoDB Search 的更多信息,请参阅 MongoDB Search 概述。

MongoDB Vector Search 使您能够对存储在MongoDB Atlas中的向量嵌入执行语义搜索。要学习;了解有关MongoDB Vector Search 的更多信息,请参阅MongoDB Vector Search 概述。

您可以在 MongoDB\Collection实例上使用以下方法来管理MongoDB Search 和MongoDB Vector Search 索引:

  • MongoDB\Collection::createSearchIndex()

  • MongoDB\Collection::createSearchIndexes()

  • MongoDB\Collection::listSearchIndexes()

  • MongoDB\Collection::updateSearchIndex()

  • MongoDB\Collection::dropSearchIndex()

注意

MongoDB Search 和MongoDB Vector Search 索引管理是异步的

MongoDB PHP库异步管理MongoDB Search 和MongoDB Vector Search 索引。以下部分中描述的库方法会立即返回服务器响应,但对搜索索引的更改会在背景进行,可能要稍后一段时间才能完成。

以下各节将提供代码示例,演示如何使用上述每种方法。

您可以使用 createSearchIndex() 方法在集合上创建单个MongoDB Search 或MongoDB Vector Search索引,也可以使用 createSearchIndexes() 方法同时创建多个索引。

以下代码示例展示了如何创建单个MongoDB搜索索引:

$searchIndexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'mySearchIdx'],
);

以下代码示例展示了如何创建单个MongoDB Vector Search索引:

$vectorSearchIndexName = $collection->createSearchIndex(
[
'fields' => [[
'type' => 'vector',
'path' => 'plot_embedding',
'numDimensions' => 1536,
'similarity' => 'dotProduct',
]],
],
['name' => 'myVSidx', 'type' => 'vectorSearch'],
);

以下代码示例展示了如何在一次调用中创建MongoDB 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',
]],
],
],
],
);

创建MongoDB Search 或MongoDB Vector Search 索引后,您可以对文档执行相应的查询类型。要学习;了解详情,请参阅以下指南:

  • 运行MongoDB搜索查询指南

  • 运行MongoDB Vector Search Query指南

您可以使用 listSearchIndexes() 方法返回集合上的MongoDB Search 和MongoDB Vector Search 索引的大量:

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo json_encode($indexInfo), PHP_EOL;
}

您可以使用 updateSearchIndex() 方法更新MongoDB Search 或MongoDB Vector Search索引。您可以使用此方法更改现有索引的名称或配置。

以下代码展示了如何更新搜索索引,以对 title 字段使用简单分析器:

$collection->updateSearchIndex(
'mySearchIdx',
['mappings' => [
'dynamic' => false,
'fields' => [
'title' => [
'type' => 'string',
'analyzer' => 'lucene.simple',
],
],
]],
);

您可以使用 dropSearchIndex() 方法从集合中删除MongoDB Search 或MongoDB Vector Search索引。

以下代码演示如何删除名为 mySearchIdx 的MongoDB Search索引:

$collection->dropSearchIndex('mySearchIdx');

要查看演示如何管理索引的可运行示例,请参阅《查询优化索引》

要查看说明如何使用MongoDB搜索功能的教程,请参阅Atlas文档中的MongoDB搜索入门。

要进一步了解本指南所讨论的任何方法,请参阅以下 API 文档:

后退

Multikey Indexes

在此页面上