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.
La Búsqueda Vectorial de MongoDB permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Para obtener más información sobre la Búsqueda Vectorial de MongoDB, consulte la Descripción General de la Búsqueda Vectorial de MongoDB.
Puede utilizar los siguientes métodos en un MongoDB\Collection instancia para administrar sus índices MongoDB Search y 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 proporcionan 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 del índice de búsqueda
A partir de la 2.2 versión, la biblioteca PHP genera un MongoDB\Exception\SearchNotSupportedException error cuando la versión de su servidor MongoDB no admite los índices de búsqueda de MongoDB. Para gestionar los errores de incompatibilidad de versiones del servidor MongoDB, añada lógica de gestión 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 se realiza correctamente 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.
Índices de búsqueda de listas
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 administrar índices, consulte Índices para la optimización de consultas.
Para ver tutoriales que explican cómo utilizar la función de búsqueda de MongoDB, consulte Introducción a la búsqueda de 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: