Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um dos principais recursos que o Azure DocumentDB fornece é a indexação de texto, que permite uma pesquisa e consulta eficientes de dados baseados em texto. O serviço implementa índices de texto da versão 2 . A versão 2 oferece suporte à diferenciação entre maiúsculas e minúsculas, mas não à sensibilidade a diacríticos.
Os índices de texto no Azure DocumentDB são estruturas de dados especiais que otimizam consultas baseadas em texto, tornando-as mais rápidas e eficientes. Eles foram projetados para lidar com conteúdo textual, como documentos, artigos, comentários ou quaisquer outros dados de texto pesado. Os índices de texto usam técnicas como tokenização, prefixação e palavras de parada para criar um índice que melhora o desempenho de pesquisas baseadas em texto.
Pré-requisitos
Uma assinatura do Azure
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita
Um cluster existente do Azure DocumentDB
- Se você não tiver um cluster, crie um novo cluster
Definir um índice de texto
Para simplificar, vamos considerar um exemplo de um aplicativo de blog com a seguinte configuração:
-
Nome do banco de dados:
cosmicworks -
Nome da coleção:
products
Este aplicativo de exemplo armazena artigos como documentos com a seguinte estrutura:
{
"_id": ObjectId("617a34e7a867530bff1b2346"),
"title": "Azure DocumentDB - A Game Changer",
"content": "Azure DocumentDB is a globally distributed, multi-model database service.",
"author": "John Doe",
"category": "Technology",
"published": true
}
Use o
createIndexmétodo com a opçãotextpara criar um índice de texto notitlecampo.use cosmicworks; db.products.createIndex({ title: "text" })Observação
Embora você possa definir apenas um índice de texto por coleção, o Azure DocumentDB permite que você crie índices de texto em vários campos para permitir que você execute pesquisas de texto em diferentes campos em seus documentos.
Opcionalmente, crie um índice para dar suporte à pesquisa nos campos
titleecontent.db.products.createIndex({ title: "text", content: "text" })
Configurar opções de índice de texto
Os índices de texto no Azure DocumentDB vêm com várias opções para personalizar seu comportamento. Por exemplo, você pode especificar o idioma para análise de texto, definir pesos para priorizar determinados campos e configurar pesquisas que não diferenciam maiúsculas de minúsculas. Aqui está um exemplo de criação de um índice de texto com opções:
Crie um índice para dar suporte à pesquisa nos campos
titleecontentcom suporte ao idioma inglês. Além disso, atribua pesos mais altos aotitlecampo para priorizá-lo nos resultados da pesquisa.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Pesos em índices de texto
Ao criar um índice de texto, você pode atribuir pesos diferentes a campos individuais no índice. Esses pesos representam a importância ou relevância de cada campo na pesquisa. O Azure DocumentDB calcula uma pontuação e os pesos atribuídos para cada documento com base nos termos de pesquisa ao executar uma consulta de pesquisa de texto. A pontuação representa a relevância do documento para a consulta de pesquisa.
Crie um índice para dar suporte à pesquisa em ambos os campos
titleecontent. Atribua um peso de 2 ao campo "título" e um peso de 1 ao campo "conteúdo".db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Observação
Quando um cliente executa uma consulta de pesquisa de texto com o termo "DocumentDB", a pontuação de cada documento na coleção será calculada com base na presença e frequência do termo nos campos "título" e "conteúdo", com maior importância dada ao campo "título" devido ao seu peso mais alto.
Executar uma pesquisa de texto usando um índice de texto
Depois que o índice de texto for criado, você poderá executar pesquisas de texto usando o operador "text" em suas consultas. O operador de texto utiliza uma cadeia de caracteres de pesquisa e a compara com o índice de texto para encontrar documentos relevantes.
Execute uma pesquisa de texto para a frase
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Opcionalmente, use o operador de projeção
$metajunto com o campotextScoreem uma consulta para ver o peso.db.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Descartando um índice de texto
Para remover um índice de texto no MongoDB, você pode usar o dropIndex() método na coleção e especificar a chave de índice ou o nome do índice de texto que você deseja remover.
Remova um índice de texto, especificando explicitamente a chave.
db.products.dropIndex({ title: "text" })Opcionalmente, remova um índice de texto especificando o nome exclusivo gerado automaticamente.
db.products.dropIndex("title_text")
Limitações de índice de texto
- Somente um índice de texto pode ser configurado em uma coleção.
- Não há suporte para hint() em combinação com uma consulta usando $text expressão.
- As operações de classificação não podem usar a ordenação do índice de texto no MongoDB.
- Índices de texto podem ser relativamente grandes, consumindo espaço de armazenamento significativo em comparação com outros tipos de índice.