Pesquisa de texto
Nesta página
MongoDB forneceíndices de texto para dar suporte a queries de texto do Atlas Search no conteúdo da string . Os índices de texto podem incluir qualquer campo cujo valor seja uma string ou uma array de elementos da string.
Observação
MongoDB Atlas também fornece o Atlas Search , que é uma solução de Atlas Search de texto mais poderosa e flexível. O restante desta seção discute índices de texto e não Atlas Search.
Para realizar pesquisa de texto com Mongoid, siga estas etapas:
Defina um índice de texto em um modelo.
Crie o índice de texto no servidor.
Crie uma query de pesquisa de texto .
Definir índice de pesquisa de texto
A definição de índice por meio do Mongoid é descrita em detalhes na página deíndices . Os índices de pesquisa de texto são descritos em detalhes em Índices de texto no manual do MongoDB . Abaixo está uma definição de exemplo de um modelo de banda com um índice de texto utilizando o campo de descrição :
class Band include Mongoid::Document field :name, type: String field :description, type: String index description: 'text' end
Observe que o tipo de índice (text
) deve ser fornecido como uma string, não como um símbolo.
Criar índice de texto
Para criar o índice, invoque a tarefa Rake db:mongoid:create_indexes
:
bundle exec rake db:mongoid:create_indexes
Como fazer queries usando o índice de texto
Para encontrar bandas cuja descrição contém "ounces" ou suas variações, use o operador $text:
Band.where('$text' => {'$search' => 'ounces'}).to_a # => [#<Band _id: 5d5341b3ce4ef35d5016746d, name: "foo", description: "ounce">]
Observe que a descrição contém a palavra "ounce" mesmo que a query de pesquisa tenha sido "ounces".
Observe também que, ao realizar a pesquisa de texto, o nome do campo não é especificado explicitamente - o operador $text
pesquisa todos os campos indexados com o índice de texto.