Menu Docs
Página inicial do Docs
/ /

Índices de pesquisa do MongoDB

Neste guia, você pode aprender a gerenciar programaticamente seus índices MongoDB Search e MongoDB Vector Search usando o driver C.

O recurso MongoDB Search permite realizar pesquisas de texto completo em collections hospedadas no MongoDB Atlas. Para saber mais sobre o MongoDB Search, consulte a Visão Geral do MongoDB Search na documentação do Atlas .

A Vector Search do MongoDB permite realizar pesquisas semânticas em incorporações vetoriais armazenadas no MongoDB Atlas . Para saber mais sobre a Vector Search do MongoDB , consulte a Visão geral da Vector Search do MongoDB na documentação do Atlas .

As seções a seguir fornecem exemplos de código que demonstram como criar, listar, atualizar e excluir índices MongoDB Search e MongoDB Vector Search .

Para criar um índice MongoDB Search ou MongoDB Vector Search , passe o comando createSearchIndexes para a função mongoc_collection_command_simple(). Você pode utilizar este comando para criar um ou múltiplos índices.

O seguinte exemplo de código mostra como criar um índice de pesquisa MongoDB :

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"createSearchIndexes" : "%s",
"indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ]
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully created search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

O seguinte exemplo de código mostra como criar um índice MongoDB Vector Search :

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"name": "<index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}]
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created Vector Search index\n");
} else {
fprintf(stderr, "Failed to create Vector Search index: %s", error.message);
}
bson_destroy(&cmd);

O seguinte exemplo de código mostra como criar ambos os índices de pesquisa em uma chamada para a função mongoc_collection_command_simple():

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"definition": {
"mappings": {
"dynamic": false
}
},
"name": "<MongoDB Search index name>"
},
{
"name": "<Vector Search index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}
]
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created search indexes\n");
} else {
fprintf(stderr, "Failed to create search indexes: %s", error.message);
}
bson_destroy(&cmd);

Para saber mais sobre a sintaxe usada para definir cada índice de pesquisa, consulte os seguintes guias na documentação do Atlas:

Você pode passar o estágio de agregação $listSearchIndexes para a função mongoc_collection_aggregate() para retornar todos os índices do MongoDB Search e do MongoDB Vector Search em uma coleção.

O exemplo de código a seguir mostra como imprimir uma lista dos índices de pesquisa de uma coleção:

bson_t pipeline;
const bson_t *doc;
bson_error_t error;
const char *pipeline_str = BSON_STR ({"pipeline" : [ {"$listSearchIndexes" : {}} ]});
bson_init_from_json (&pipeline, pipeline_str, -1, &error);
mongoc_cursor_t *cursor =
mongoc_collection_aggregate (collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL);
while (mongoc_cursor_next (cursor, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (&pipeline);
mongoc_cursor_destroy (cursor);

Você pode passar o comando updateSearchIndex para a função mongoc_collection_command_simple() para atualizar um índice do MongoDB Search ou do MongoDB Vector Search .

O código a seguir mostra como atualizar o índice do MongoDB Search criado na seção Criar um índice de pesquisa deste guia para usar mapeamentos dinâmicos:

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"updateSearchIndex" : "%s",
"definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully updated search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

O código abaixo mostra como atualizar o índice do MongoDB Vector Search criado na seção Criar um índice de pesquisa deste guia para usar a cosine função de similaridade:

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"updateSearchIndex": "%s",
"name": "<index name>",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "cosine"
}]
}
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully updated search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

Você pode passar o comando dropSearchIndexes para a função mongoc_collection_command_simple() para excluir um índice do MongoDB Search ou do MongoDB Vector Search .

O seguinte código mostra como excluir um índice de pesquisa de uma coleção:

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"dropSearchIndexes" : "%s",
"index" : "<index name>"
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully deleted search index\n");
} else {
fprintf (stderr, "Failed to delete search index: %s", error.message);
}
bson_destroy (&cmd);

Para saber mais sobre o MongoDB Search, consulte Índices de pesquisa do MongoDB na documentação do Atlas .

Para saber mais sobre a Vector Search do MongoDB , consulte Como indexar campos para a Vector Search do MongoDB na documentação do Atlas .

Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API:

Voltar

Multikey Indexes

Nesta página