Limitar o número de entradas de índices de texto verificadas em implantações autogerenciadas
Este tutorial descreve como criar índices para limitar o número de entradas de índice verificadas para queries que incluem uma expressão $text
e condições de igualdade.
Uma coleção inventory
contém os seguintes documentos:
{ _id: 1, dept: "tech", description: "lime green computer" } { _id: 2, dept: "tech", description: "wireless red mouse" } { _id: 3, dept: "kitchen", description: "green placemat" } { _id: 4, dept: "kitchen", description: "red peeler" } { _id: 5, dept: "food", description: "green apple" } { _id: 6, dept: "food", description: "red potato" }
Considere o caso de uso comum que realiza pesquisas de texto por departamentos individuais , como:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
Para limitar a pesquisa de texto para digitalizar somente os documentos dentro de um dept
específico, crie um índice composto que primeiro especifique uma chave de índice ascendente/descendente no campo dept
e, em seguida, uma chave de índice text
no campo description
:
db.inventory.createIndex( { dept: 1, description: "text" } )
Em seguida, a pesquisa de texto dentro de um departamento específico limitará a digitalização de documentos indexados. Por exemplo, a query a seguir verifica somente os documentos com dept
igual a kitchen
:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
Observação
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 índicetext
devem ser listadas adjacentemente no documento de especificação do índice.