Dados de modelo compatíveis com pesquisa de palavras-chave
Nesta página
Observação
A pesquisa de palavras-chave não é o mesmo que pesquisa de texto ou Full Text Search e não oferece derivação ou outros recursos de processamento de texto. Consulte a seção Limitações de índices de palavras-chave para obter mais informações.
Em 2.4, O MongoDB fornece um recurso de pesquisa de texto. Consulte Índices de texto em sistemas autogerenciados para obter mais informações.
Se seu aplicativo precisar executar queries sobre o conteúdo de um campo que contém texto, você poderá executar as correspondências exatas no texto ou usar $regex
para usar as correspondências de padrão de expressão regulares. No entanto, para muitas operações de texto, esses métodos não satisfazem os requisitos do aplicativo.
Esse padrão descreve um método para dar suporte à pesquisa de palavras-chave usando o MongoDB para oferecer suporte à funcionalidade de pesquisa no aplicativo, que usa palavras-chave armazenadas em uma array no mesmo documento que o campo de texto. Combinado com um índice de várias chaves, esse padrão pode oferecer suporte às operações de procura por palavras-chave do aplicativo.
Padrão
Para adicionar estruturas ao documento para oferecer suporte a queries baseadas em palavras-chave, crie um campo de array em seus documentos e adicione as palavras-chave como strings na array. Você pode então criar um índice de várias chaves na array e criar queries que selecionam valores da array.
Exemplo
Considere uma collection de volumes de biblioteca para a qual você deseja fornecer pesquisa baseada em tópicos. Para cada volume, você adiciona a array topics
e quantas palavras-chave forem necessárias para um determinado volume.
Para o volume de Moby-Dick
, você pode ter o seguinte documento:
{ title : "Moby-Dick" , author : "Herman Melville" , published : 1851 , ISBN : 0451526996 , topics : [ "whaling" , "allegory" , "revenge" , "American" , "novel" , "nautical" , "voyage" , "Cape Cod" ] }
Em seguida, você cria um índice de várias chaves na array topics
:
db.volumes.createIndex( { topics: 1 } )
O índice de de várias chaves cria entradas de índice separadas para cada palavra-chave na array topics
. Por exemplo, o índice contém uma entrada para whaling
e outra para allegory
.
Em seguida, faça a query com base nas palavras-chave. Por exemplo:
db.volumes.findOne( { topics : "voyage" }, { title: 1 } )
Observação
Uma array com um grande número de elementos, como centenas ou milhares de palavras-chave, incorrerá em maiores custos de indexação na inserção.
Limitações de índices de palavras-chave
O MongoDB pode oferecer suporte a pesquisas de palavras-chave usando modelos de dados específicos e índices de várias chaves. No entanto, esses índices de palavras-chave não são suficientes ou comparáveis aos produtos de texto completo nos seguintes aspectos:
Derivação. As queries de palavras-chave no MongoDB não podem analisar palavras-chave para palavras raiz ou relacionadas.
Sinônimos. Os recursos de pesquisa baseados em palavra-chave devem oferecer suporte para queries de sinônimos ou relacionadas na camada do aplicativo.
Classificação. As pesquisas de palavras-chave descritas neste documento não fornecem uma forma de ponderar os resultados.
Indexação assíncrona. O MongoDB cria índices de forma síncrona, o que significa que os índices usados para índices de palavras-chave são sempre atuais e podem operar em tempo real. No entanto, índices em massa assíncronos podem ser mais eficientes para alguns tipos de conteúdo e volumes de trabalho.