Menu Docs
Página inicial do Docs
/ /

Índices de Pesquisa do MongoDB e Índices de Pesquisa Vetorial do MongoDB

Neste guia, você pode aprender a gerenciar programaticamente seus índices de pesquisa MongoDB Pesquisa e MongoDB Vector Pesquisa usando o driver Ruby.

O recurso MongoDB Search permite realizar pesquisas de texto completo em coleções hospedadas no MongoDB Atlas. Para saber mais sobre a Pesquisa do MongoDB, consulte a Visão Geral da Pesquisa do MongoDB.

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

Você pode chamar os seguintes métodos para gerenciar seus índices de pesquisa MongoDB e índices de pesquisa vetorial MongoDB:

  • search_indexes#create_one

  • search_indexes#create_many

  • search_indexes#update_one

  • search_indexes#drop_one

Observação

O gerenciamento do índice do MongoDB pesquisa e da MongoDB pesquisa vetorial é assíncrono

O driver Ruby gerencia índices de pesquisa MongoDB Search e índices de pesquisa MongoDB Vector Search de forma assíncrona. Os métodos descritos nas seções a seguir retornam a resposta do servidor imediatamente, mas as alterações nos índices de pesquisa ocorrem em segundo plano e podem não ser concluídas até algum tempo depois.

As seções a seguir fornecem exemplos de código que demonstram como usar cada um dos comandos anteriores.

Para criar um único índice do MongoDB pesquisa ou do MongoDB pesquisa vetorial, use o método search_indexes#create_one. Para criar múltiplos índices, use o método search_indexes#create_many. Ambos os métodos retornam imediatamente, enquanto os índices são criados de forma assíncrona em segundo plano.

O seguinte exemplo de código mostra como criar um índice de pesquisa MongoDB fornecendo uma definição de índice e um nome opcional para o índice:

# Creates indexes on all dynamically indexable fields with a default index name
collection.search_indexes.create_one(
{ mappings: { dynamic: true } }
)
# Creates an index on the specified field with the specified index name
index_definition = {
mappings: {
dynamic: false,
fields: {
fullplot: { type: 'string' }
}
}
}
collection.search_indexes.create_one(index_definition, name: 'mySearchIndex')

Observação

Por padrão, o driver cria um índice de pesquisa do MongoDB se você não passar um parâmetro type. Para criar um índice de pesquisa vetorial do MongoDB, você deve definir o parâmetro type como 'vectorSearch' ao chamar create_one.

Você pode usar search_indexes#create_many para criar vários índices de pesquisa do MongoDB ou índices de pesquisa do MongoDB Vector fornecendo um array de especificações de índice. Cada especificação de índice deve incluir os seguintes componentes:

  • definition parâmetro: Define o índice

  • name parâmetro: Especifica o nome do índice

  • type parâmetro: especifica o tipo de índice ('search' ou 'vectorSearch')

O seguinte exemplo de código mostra como criar índices de pesquisa MongoDB e índices de pesquisa vetorial MongoDB em uma chamada:

index_spec_1 = {
name: 'searchIndex_plot',
type: 'search',
definition: {
mappings: {
dynamic: false,
fields: {
plot: { type: 'string' }
}
}
}
}
index_spec_2 = {
name: 'vsIndex_plot_embedding',
type: 'vectorSearch',
definition: {
fields: [
{
type: "vector",
path: "plot_embedding",
numDimensions: 1536,
similarity: "dotProduct"
}
]
}
}
collection.search_indexes.create_many([index_spec_1, index_spec_2])

Para definições de índice mais longas, é útil definir as definições de índice fora da chamar de método. Para saber mais sobre a sintaxe das definições de índice, consulte os guias Revisão da sintaxe do índice de pesquisa do MongoDB ou os guias Como indexar campos para a pesquisa vetorial do MongoDB no manual do Atlas.

Para atualizar um índice do MongoDB pesquisa ou do MongoDB pesquisa vetorial, use o método search_indexes#update_one.

Para atualizar um índice, você deve fornecer uma nova definição de índice. Você deve especificar o índice que deseja atualizar utilizando o name ou id do índice. O seguinte código mostra como atualizar um índice de pesquisa MongoDB :

updated_definition = {
mappings: {
dynamic: false,
fields: { fullplot: { type: 'string' } }
}
}
# Specifies the index to update by using the index name
collection.search_indexes.update_one(updated_definition, name: 'searchIndex_plot')
# Specifies the index to update by using the index id
collection.search_indexes.update_one(updated_definition, id: <index id>)

Para excluir um índice do MongoDB pesquisa ou do MongoDB pesquisa vetorial, use o método search_indexes#drop_one.

Para excluir um índice, é necessário fornecer o id ou name do índice. O seguinte código mostra como excluir um índice de pesquisa de uma coleção:

# Specifies the index to delete by using the index name
collection.search_indexes.drop_one(name: 'searchIndex_plot')
# Specifies the index to delete by using the index id
collection.search_indexes.drop_one(id: <index id>)

Você pode utilizar o objeto search_indexes para listar toda a especificação de índice de cada índice de pesquisa do MongoDB e de pesquisa vetorial do MongoDB em uma coleção:

puts collection.search_indexes.collect(&:to_json)

Para listar campos individuais na especificações de índice para cada índice, itere sobre o objeto search_indexes:

collection.search_indexes.each do |index_spec|
p index_spec['id']
p index_spec['name']
p index_spec['status']
p index_spec['queryable']
p index_spec['latestDefinition']
end

Para saber mais sobre o Pesquisa MongoDB, consulte a documentação da Pesquisa MongoDB.

Para saber mais sobre a pesquisa vetorial do MongoDB, consulte o guia Executar uma query de pesquisa vetorial do MongoDB do driver Ruby ou a documentação da pesquisa vetorial do MongoDB.

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

Voltar

Multichave

Nesta página