Índices de texto em sistemas autogerenciados
Nesta página
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.
Os índices de texto oferecem suporte a queries de pesquisa de texto em campos que contêm conteúdo de string. Os índices de texto melhoram o desempenho ao pesquisar palavras ou frases específicas no conteúdo da string.
Uma coleção só pode ter um índice de texto, mas esse índice pode incluir vários campos.
Para criar um índice de texto, use o seguinte protótipo:
db.<collection>.createIndex( { <field1>: "text", <field2>: "text", ... } )
Suporte de $text
Os índices de texto suportam operações de query do $text
em implantações locais. Para usar $text
, você deve criar um índice de texto.
Casos de uso
Os documentos da coleção clothing
de uma loja online incluem um campo description
que contém uma string de texto descrevendo cada item. Para encontrar roupas feitas com silk
, crie um índice de texto no campo description
e execute uma query $text
para documentos com a palavra-chave silk
. A pesquisa retorna todos os documentos que mencionam silk
no campo description
.
Começar
Para saber como criar índices de texto e usar índices de texto em casos de uso específicos, consulte:
Detalhes
Esta seção descreve os detalhes de índices de texto.
Índices de texto compostos
Para um índice composto que inclui uma chave de índice de texto junto com chaves de outros tipos, somente o campo de índice de texto determina se o índice faz referência a um documento. As outras chaves não determinam se o índice faz referência aos documentos.
sparse
Propriedade
Os índices de texto são sempre esparsos. Ao criar um índice de texto, o MongoDB ignora a opção sparse
.
Se um documento existente ou recém-inserido não tiver um campo de índice de texto (ou o campo for nulo ou uma matriz vazia), o MongoDB não adicionará uma entrada de índice de texto para o documento.
Requisitos de armazenamento e custos de desempenho
Os índices de texto têm os seguintes requisitos de armazenamento e custos de desempenho:
Os índices de texto podem ocupar uma grande quantidade de RAM. 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 de texto é semelhante a construir um grande índice multi-chave, mas leva mais tempo do que construir um índice simples ordenado (scalar) nos mesmos dados.
Ao criar um índice de texto que ocupa uma grande quantidade de RAM, verifique se você tem um limite suficientemente alto de descritores de arquivo abertos. Consulte as configurações recomendadas.
Os índices de texto afetam o desempenho de gravação porque o MongoDB deve adicionar um índice entrada para cada palavra pós-derivada única em cada campo indexado de cada novo documento de origem.
Os índices de texto armazenam palavras individuais de uma cadeia de texto. Eles não armazenam frases ou informações sobre a proximidade de palavras nos documentos. Como um resultado, queries que especificam várias palavras são executadas mais rapidamente quando todo o a coleção cabe na RAM.
Saiba mais
Para saber mais sobre índices de texto, consulte:
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 pipeline de agregação em implantações autogerenciadas.