Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Índices de texto em sistemas autogerenciados

Nesta página

  • Visão geral
  • Compatibilidade
  • Versões
  • Criar índice de texto
  • Insensibilidade a maiúsculas e minúsculas
  • Insensibilidade a diacríticos
  • Delimitadores de tokenização
  • entrada de índice
  • Idiomas suportados e palavras de parada
  • sparse Propriedade
  • Restrições
  • pesquisar de texto e frases
  • Requisitos de armazenamento e custos de desempenho
  • Suporte à pesquisa de texto

Observação

Esta página descreve as funcionalidades de consulta de texto para implantações autogerenciadas (não Atlas). Para dados hospedados no MongoDB Atlas, o MongoDB oferece uma solução aprimorada de consulta de texto completo, Atlas Search.

Para executar queries de texto do Atlas Search em sistemas autogerenciados, você deve ter um índice de texto na sua collection. 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. Uma collection só pode ter um índice de texto do Atlas Search , mas esse índice pode cobrir vários campos.

Você pode utilizar índices de texto para implantações hospedadas no MongoDB Atlas.

Para saber mais sobre como gerenciar índices para distribuições hospedadas no MongoDB Atlas, consulte Criar, visualizar, descartar e ocultar índices.

O índice de texto está disponível em três versões. Por padrão, o MongoDB usa a versão 3 com novos índices de texto.

Para substituir o padrão e utilizar uma versão mais antiga, utilize a opção textIndexVersion ao criar o índice.

Importante

Uma collection pode ter no máximo um índice text .

O Atlas Search (disponível no MongoDB Atlas) suporta vários índices de pesquisa com texto completo em uma única coleção. Para saber mais, consulte a documentação do Atlas Search.

Para criar um índice text , use o método db.collection.createIndex() . Para indexar um campo que contém uma string ou uma array de elementos de string, inclua o campo e especifique a string literal "text" no documento de índice, como no exemplo a seguir:

db.reviews.createIndex( { comments: "text" } )

Você pode indexar vários campos para o índice text . O exemplo seguinte cria um índice text nos campos subject e comments:

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)

Um índice composto pode incluir chaves de índice text em combinação com chaves de índice ascendentes/descendentes. Para obter mais informações, consulte Índice composto.

Para eliminar um índice text , use o nome do índice. Consulte Usar o nome do índice para descartar um índice text para obter mais informações.

Para um índice text , o peso de um campo indexado denota a importância do campo em relação aos outros campos indexados em termos de pontuação de pesquisa de texto.

Para cada campo indexado no documento, o MongoDB multiplica o número de correspondências pelo peso e soma os resultados. Usando essa soma, o MongoDB calcula a pontuação do documento. Consulte o operador $meta para obter detalhes sobre como retornar e classificar por pontuações de texto.

O peso padrão é 1 para os campos indexados. Para ajustar os pesos dos campos indexados, inclua a opção weights no método db.collection.createIndex() .

Para obter mais informações sobre como usar pesos para controlar os resultados de uma pesquisa de texto, consulte Atribuir pesos aos resultados da pesquisa de texto em sistemas autogerenciados.

Observação

Os Índices de Texto Curinga são diferentes dos Índices Curinga. Os índices curinga não suportam query usando o operador $text .

Embora os Índices de Texto Curinga e os Índices Curinga compartilhem o padrão de campo curinga $** , eles são tipos de índice distintos. Somente índices de texto curinga suportam o operador $text .

Ao criar um índice text em múltiplos campos, você também pode utilizar o especificador curinga ($**). Com um índice de texto curinga, o MongoDB indexa todos os campos que contêm dados de string para cada documento na collection. O exemplo a seguir cria um índice de texto utilizando o especificador curinga:

db.collection.createIndex( { "$**": "text" } )

Este índice permite pesquisa de texto em todos os campos com conteúdo de string. Esse índice pode ser útil com dados altamente não estruturados se não estiver claro quais campos incluir no índice de texto ou para queries ad-hoc.

Os índices de texto curinga são índices text em vários campos. Dessa forma, você pode atribuir pesos a campos específicos durante a criação do índice para controlar a classificação dos resultados. Para obter mais informações sobre como usar pesos para controlar os resultados de uma pesquisa de texto, consulte Atribuir pesos aos resultados da pesquisa de texto em sistemas autogerenciados.

Os índices de texto curinga, como em todos os índices de texto, podem fazer parte de índices compostos. Por exemplo, o seguinte cria um índice composto no campo a , bem como o especificador curinga:

db.collection.createIndex( { a: 1, "$**": "text" } )

Como acontece com todos os índices de texto compostos, como o a precede a chave do índice de texto, para executar uma $text Atlas Search com esse índice, o predicado da query deve incluir uma condição de correspondência de igualdade a. Para obter informações sobre índices de texto compostos, consulte Índices de texto compostos.

O índice da versão 3 text suporta o comum,C So simples e, para idiomas inglês, o dobramento especial de T caixa conforme especificado em Unicode Dobramento de maiúsculas e minúsculas do banco de dados 8.0 .

As dobras de maiúsculas e minúsculas expandem a insensibilidade a entre maiúsculas e minúsculas do índice text para incluir caracteres com diacríticos, como é e É, e caracteres de alfabetos não latinos, como "é" e "é" no alfabeto cirílico .

A versão 3 do índice text também é insensível a diacríticos. Como tal, o índice também não distingue entre é, É, e e E.

As versões anteriores do índice text diferenciam maiúsculas de minúsculas apenas para [A-z] ; ou seja, diferencia maiúsculas de minúsculas apenas para caracteres latinos não diacríticos. Para todos os outros caracteres, as versões anteriores do índice de texto os tratam como distintos.

Com a versão 3, o índice text é insensível a diacríticos. Ou seja, o índice não faz distinção entre caracteres que contêm diacríticos e sua contraparte sem sinais, como é, ê e e. Mais especificamente, o text índice remove os caracteres categorizados como diacríticos no Unicode 8.0 Lista de acessórios do banco de dados de caracteres.

A versão 3 do índice text também diferencia maiúsculas de minúsculas para caracteres com diacríticos. Como tal, o índice também não distingue entre é, É, e e E.

As versões anteriores do índice text tratam caracteres com diacríticos como distintos.

Para tokenização, a versão 3 text índice usa os delimitadores categorizados Dash emHyphen, Pattern_Syntax, Quotation_Mark, Terminal_Punctuation, e White_Space no Unicode 8.0 Lista de acessórios do banco de dados de caracteres.

Por exemplo, se for fornecida uma string "Il a dit qu'il «était le meilleur joueur du monde»", o índice text tratará «, » e espaços como delimitadores.

As versões anteriores do índice tratam « como parte do termo "«était" e » como parte do termo "monde»".

text o índice tokeniza e determina os termos nos campos indexados para as entradas do índice. O índice text armazena uma entrada de índice para cada termo derivado único em cada campo indexado para cada documento na coleção. O índice usa derivação simples de sufixo específico do idioma .

O MongoDB suporta pesquisa de texto para vários idiomas. Os índices text eliminam palavras vazias específicas do idioma (por exemplo, em inglês, the, an, a, and, etc.) e usam derivação simples de sufixo específico do idioma. Para obter uma lista dos idiomas suportados, consulte Idiomas de pesquisa de texto em implementações autogerenciadas.

Se você especificar um valor default_language de none, o índice de texto analisará cada palavra no campo, incluindo palavras vazias, e ignorará a derivação do sufixo.

Para especificar um idioma para o índice text , consulte Especificar o idioma padrão para um índice de texto em sistemas autogerenciados.

text os índices são sempre escassos e ignoram a opção esparsa . Se um documento não tiver um campo de índice text (ou o campo for null ou uma array vazia), o MongoDB não adicionará uma entrada para o documento ao índice text . Para inserções, o MongoDB insere o documento, mas não adiciona ao índice text .

Para um índice composto que inclui uma chave de índice text junto com chaves de outros tipos, somente o campo de índice text determina se o índice faz referência a um documento. As outras chaves não determinam se o índice faz referência aos documentos ou não.

Uma collection pode ter no máximo um índice text .

O Atlas Search (disponível no MongoDB Atlas) suporta vários índices de pesquisa com texto completo em uma única coleção. Para saber mais, consulte a documentação do Atlas Search.

Se uma query incluir uma expressão $text, não sera possível usar hint() para especificar o índice a ser utilizado na query.

Se a string $search de uma operação $text incluir uma frase e termos individuais, $text corresponderá somente aos documentos que incluem a frase.

Você não pode usar o operador $text com várias frases.

As operações de classificação não podem obter a ordem de classificação de um índice text , mesmo de um índice de texto composto; ou seja, operações de classificação não podem usar a ordenação no índice de texto.

Um índice composto pode incluir uma chave de índice text em combinação com chaves de índice ascendentes/descendentes. No entanto, esses índices compostos têm as seguintes restrições:

  • Um text índice composto não pode incluir nenhum outro tipo de índice especial, como campos de índice geoespacial ou de várias chaves .

  • Se o índice de texto composto incluir chaves que precedem a chave do índice de texto, para usar $text, o predicado de query deverá incluir condições de correspondência de igualdade nas chaves anteriores.

  • Ao criar um índice composto text , todas as chaves de índice text devem ser listadas adjacentemente no documento de especificação do índice.

Consulte também Índice de texto e classificação para obter limitações adicionais.

Para obter um exemplo de um índice de texto composto, consulte Limitar o número de entradas de índices de texto verificadas em sistemas autogerenciados.

Para eliminar um índice text , passe o nome do índice para o método db.collection.dropIndex() . Para obter o nome do índice, execute o método db.collection.getIndexes() .

Para obter informações sobre o esquema de nomenclatura padrão para índices text , bem como sobrepor o nome padrão, consulte Especificar nome para o índice text .

text os índices suportam apenas comparação binária simples e não suportam agrupamento.

Para criar um índice text em uma collection que tenha um agrupamento não simples, você deve especificar explicitamente {collation: {locale: "simple"} } ao criar o índice.

text índices têm os seguintes requisitos de armazenamento e custos de desempenho:

  • text os índices podem ser grandes. Eles contêm uma entrada de índice para cada palavra única pós-processamento (stemming) em cada campo indexado para cada documento inserido.

  • Construir um índice text é muito semelhante a construir um grande índice de múltiplas chaves e levará mais tempo do que construir um índice simples ordenado (scalar) nos mesmos dados.

  • Ao criar um índice text grande em uma collection existente, verifique se você tem um limite suficientemente alto de descritores de arquivo abertos. Consulte as configurações recomendadas.

  • text os índices terão impacto na taxa de transferência de inserção porque o MongoDB deve adicionar uma entrada de índice para cada palavra única pós-processamento (stemming) em cada campo indexado de cada novo documento de origem.

  • Além disso, os índices text não armazenam frases ou informações sobre a proximidade de palavras nos documentos. Como resultado, a query de frase será executada com muito mais eficiência quando toda a collection caber na RAM.

O índice text suporta $text operações de query. Para exemplos de pesquisa de texto, consulte o $text reference page. Para obter exemplos de operações $text em pipelines de agregação , consulte $text no aggregation pipeline sobre sistemas autogerenciados.

Voltar

Idiomas