Overview
En esta guía, puede aprender a administrar programáticamente sus índices de MongoDB Search y MongoDB Vector Search utilizando la librería PHP.
La funcionalidad de búsqueda de MongoDB permite realizar búsquedas en texto completo en colecciones alojadas en MongoDB Atlas. Para obtener más información sobre MongoDB Search, consulte la MongoDB Search Overview.
MongoDB Vector Search permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Para aprender más sobre MongoDB Vector Search, se puede consultar la MongoDB Vector Search Overview.
Se pueden utilizar los siguientes métodos en una MongoDB\Collection instancia para gestionar los índices de MongoDB Search y de MongoDB Vector Search:
MongoDB\Collection::createSearchIndex()MongoDB\Collection::createSearchIndexes()MongoDB\Collection::listSearchIndexes()MongoDB\Collection::updateSearchIndex()MongoDB\Collection::dropSearchIndex()
Nota
La gestión de MongoDB Search y MongoDB Vector Search Index es asíncrona
La biblioteca PHP de MongoDB gestiona los índices de MongoDB Search y MongoDB Vector Search de forma asíncrona. Los métodos de la librería descritos en las siguientes secciones devuelven la respuesta del servidor de inmediato, pero los cambios en sus indices de búsqueda se producen en segundo plano y pueden no completarse hasta más tarde.
Las siguientes secciones muestran ejemplos de código que demuestran cómo utilizar cada uno de los métodos anteriores.
Crear un índice de búsqueda
Puedes utilizar el método createSearchIndex() para crear un único índice de Búsqueda MongoDB o de Búsqueda Vectorial MongoDB en una colección, o el método createSearchIndexes() para crear varios índices simultáneamente.
El siguiente ejemplo de código muestra cómo crear un único índice de MongoDB Search:
$searchIndexName = $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => 'mySearchIdx'], );
El siguiente ejemplo de código muestra cómo crear un único índice de MongoDB Vector Search:
$vectorSearchIndexName = $collection->createSearchIndex( [ 'fields' => [[ 'type' => 'vector', 'path' => 'plot_embedding', 'numDimensions' => 1536, 'similarity' => 'dotProduct', ]], ], ['name' => 'myVSidx', 'type' => 'vectorSearch'], );
El siguiente ejemplo de código muestra cómo crear índices de Búsqueda de MongoDB y Búsqueda Vectorial en una sola llamada:
$indexNames = $collection->createSearchIndexes( [ [ 'name' => 'SearchIdx', 'definition' => ['mappings' => ['dynamic' => true]], ], [ 'name' => 'VSidx', 'type' => 'vectorSearch', 'definition' => [ 'fields' => [[ 'type' => 'vector', 'path' => 'plot_embedding', 'numDimensions' => 1536, 'similarity' => 'dotProduct', ]], ], ], ], );
Después de crear índices de MongoDB Search o MongoDB Vector Search, puedes realizar los tipos de query correspondientes en tus documentos. Para obtener más información, consulta las siguientes guías:
Gestión de errores de índices de búsqueda
A partir de la versión 2.2, la librería PHP genera un error MongoDB\Exception\SearchNotSupportedException cuando tu versión de MongoDB Server no es compatible con los índices de búsqueda de MongoDB. Para procesar errores de incompatibilidad de versión del MongoDB Server, agregue lógica de manejo de errores a su aplicación.
El siguiente ejemplo llama al método createSearchIndex() e imprime un mensaje de error si la creación del índice no tiene éxito debido a una versión incompatible del servidor MongoDB:
try { $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => 'testSearchIdx'], ); } catch (SearchNotSupportedException $exception) { echo $exception->getMessage() . "\n"; }
Tip
Compatibilidad del servidor
Para aprender sobre las versiones requeridas del MongoDB Server para las funciones de búsqueda, consulta Compatibilidad y limitaciones de la MongoDB Search en la documentación de Atlas.
listSearchIndexes
Puede utilizar el método listSearchIndexes() para devolver un arreglo de los índices de MongoDB Search y MongoDB Vector Search en una colección:
foreach ($collection->listSearchIndexes() as $indexInfo) { echo json_encode($indexInfo), PHP_EOL; }
Actualizar un índice de búsqueda
Puedes utilizar el método updateSearchIndex() para actualizar un índice de MongoDB Search o de búsqueda vectorial de MongoDB. Puede utilizar este método para cambiar el nombre o la configuración de un índice existente.
El siguiente código muestra cómo actualizar un índice de búsqueda para usar un analizador simple en el campo title:
$collection->updateSearchIndex( 'mySearchIdx', ['mappings' => [ 'dynamic' => false, 'fields' => [ 'title' => [ 'type' => 'string', 'analyzer' => 'lucene.simple', ], ], ]], );
Eliminar un índice de búsqueda
Puedes usar el método dropSearchIndex() para remover un índice de MongoDB Search o MongoDB Vector Search de una colección.
El siguiente código muestra cómo borrar el índice de búsqueda de MongoDB llamado mySearchIdx:
$collection->dropSearchIndex('mySearchIdx');
Información Adicional
Para ver ejemplos ejecutables que demuestran cómo gestionar índices, consulte Índices para la optimización de query.
Para ver tutoriales que explican cómo utilizar la funcionalidad de MongoDB Search, consulta Cómo empezar con búsquedas en MongoDB en la documentación de Atlas.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API: