Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma das principais funcionalidades que o Azure DocumentDB oferece é a indexação de texto, que permite uma pesquisa e consulta eficientes de dados baseados em texto. O serviço implementa índices de texto versão 2 . A versão 2 suporta sensibilidade a maiúsculas, mas não sensibilidade ao diacrítico.
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. São concebidos para lidar com conteúdo textual como documentos, artigos, comentários ou qualquer outro dado com muito texto. Os índices de texto utilizam técnicas como tokenização, stemming e palavras de parada para criar um índice que melhora o desempenho das 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 do Azure DocumentDB existente
- Se não tiver um cluster, crie um novo cluster
Defina um índice de texto
Para simplificar, consideremos um exemplo de uma aplicação de blog com a seguinte configuração:
-
Nome da base de dados:
cosmicworks -
Nome da coleção:
products
Esta aplicação 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
}
Utilize o método
createIndexcom a opçãotextpara criar um índice de texto no campotitle.use cosmicworks; db.products.createIndex({ title: "text" })Observação
Embora possa definir apenas um índice de texto por coleção, o Azure DocumentDB permite-lhe criar índices de texto em múltiplos campos para realizar pesquisas de texto em diferentes campos dos seus documentos.
Opcionalmente, crie um índice para suportar a pesquisa tanto 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 o seu comportamento. Por exemplo, pode especificar o idioma para análise de texto, definir pesos para priorizar certos campos e configurar pesquisas que não fazem distinção entre maiúsculas e minúsculas. Aqui está um exemplo de criação de um índice de texto com opções:
Crie um índice para suportar a pesquisa tanto no campo
titlecomo no campocontentcom suporte ao idioma inglês. Além disso, atribui pesos mais altos aotitlecampo para o priorizar nos resultados de pesquisa.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Pesos nos índices de texto
Ao criar um índice de texto, pode atribuir diferentes pesos a campos individuais no índice. Estes pesos representam a importância ou relevância de cada campo na pesquisa. O Azure DocumentDB calcula uma pontuação e atribui pesos a 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 suportar a pesquisa tanto no campo
titlecomo no campocontent. Atribui um peso de 2 ao campo "título" e um peso de 1 ao campo de "conteúdo".db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Observação
Quando um cliente realiza uma pesquisa de texto com o termo "DocumentDB", a pontuação de cada documento da coleção será calculada com base na presença e frequência do termo tanto nos campos "título" como no "conteúdo", dando maior importância ao campo "título" devido ao seu maior peso.
Realize uma pesquisa de texto usando um índice de texto
Depois de criado o índice de texto, pode realizar pesquisas de texto usando o operador "texto" nas suas consultas. O operador de texto pega numa string de pesquisa e compara-a com o índice de texto para encontrar documentos relevantes.
Faça uma pesquisa de texto pela expressão
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Opcionalmente, use o operador de projeção
$metajunto com o campotextScorenuma consulta para ver o peso.db.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Eliminar um índice de texto
Para remover um índice de texto no MongoDB, pode usar o método dropIndex() na coleção e especificar a chave de índice ou o nome do índice de texto que pretende remover.
Elimine um índice de texto especificando explicitamente a chave.
db.products.dropIndex({ title: "text" })Opcionalmente, remova um índice de texto especificando o nome único gerado automaticamente.
db.products.dropIndex("title_text")
Limitações do índice de texto
- Apenas um índice de texto pode ser definido em uma coleção.
- O Hint() não é suportado em combinação com uma consulta usando $text expressão.
- As operações de ordenação não podem usar a ordem do índice de texto no MongoDB.
- Os índices de texto podem ser relativamente grandes, consumindo espaço de armazenamento significativo em comparação com outros tipos de índice.