Menu Docs
Página inicial do Docs
/
Atlas
/ / / /

Analisador de palavras-chave

O analisador keyword aceita uma string ou array de strings como parâmetro e as indexa como um único termo (token). Somente as correspondências exatas no campo são retornadas. Ele deixa todo o texto em suas letras maiúsculas e minúsculas originais.

Dica

Para correspondência exata, em vez de usar o keyword analisador , você pode indexar o campo como o tipo token MongoDB Search e usar o operador igual para pesquisar o campo.

Se você selecionar Refine Your Index, a UI do Atlas exibirá uma seção intitulada View text analysis of your selected index configuration dentro da seção Index Configurations. Se você expandir esta seção, a UI do Atlas exibirá o índice e os tokens de pesquisa que o analisador keyword gera para cada string de amostra. É possível ver os tokens que o analisador keyword cria para um documento de amostra integrado e uma cadeia de query ao criar ou editar um índice na UI do Atlas Visual Editor.

Importante

O MongoDB Search não indexará campos de string em que os tokens do analisador excedam 32766 bytes de tamanho. Se estiver usando o analisador de palavras-chave, os campos de string que excederem 32766 bytes não serão indexados.

A seguinte definição de índice de exemplo especifica um índice no title campo na coleção sample_mflix.movies utilizando o keyword analisador . Para acompanhar esse exemplo, carregue os dados de amostra em seu cluster e use mongosh ou navegue até a Create a Search Index página na interface do usuário do Atlas seguindo as etapas do tutorial Criar um índice de pesquisa do MongoDB .

Em seguida, usando a movies collection como sua fonte de dados, siga o procedimento de exemplo para criar um índice a partir de ou da UI do mongosh Atlas Visual Editor JSON editorou.


➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo nesta página.


  1. Clique em Refine Your Index para configurar seu índice.

  2. Na seção Index Configurations, alterne Dynamic Mapping para off.

  3. Na seção Field Mappings, clique em Add Field para abrir a janela Add Field Mapping.

  4. Clique em Customized Configuration.

  5. Selecione title no menu suspenso Field Name.

  6. Clique no menu suspenso Data Type e selecione String se ainda não estiver selecionado.

  7. Expanda o String Properties e faça as seguintes alterações:

    Analisador de índice

    Selecione lucene.keyword no menu suspenso.

    Analisador de pesquisa

    Selecione lucene.keyword no menu suspenso.

    Opções de índice

    Use o offsets padrão.

    Store

    Use o true padrão.

    Ignorar acima

    Manter a configuração padrão.

    Normas

    Use o include padrão.

  8. Clique em Add.

  9. Clique em Save Changes.

  10. Clique em Create Search Index.

  1. Substitua a definição de índice padrão pela seguinte definição de índice.

    {
    "mappings": {
    "fields": {
    "title": {
    "type": "string",
    "analyzer": "lucene.keyword"
    }
    }
    }
    }
  2. Clique em Next.

  3. Clique em Create Search Index.

1db.movies.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "fields": {
6 "title": {
7 "type": "string",
8 "analyzer": "lucene.keyword"
9 }
10 }
11 }
12 }
13)

A query abaixo procura a frase Class Action no campo title.

  1. Clique no botão Query para o seu índice.

  2. Clique em Edit Query para editar a query.

  3. Clique em na barra de query e selecione o banco de dados e a coleção.

  4. Substitua a query padrão pelo seguinte e clique em Find:

    [
    {
    "$search": {
    "text": {
    "query": "Class Action",
    "path": "title"
    }
    }
    }
    ]
    SCORE: 4.346973419189453 _id: "573a1399f29313caabcec6b7"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "Jeb Ward is an attorney who specializes in whistle blower, David vs. G…"
    genres: Array (2)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-09-06 00:42:51.167000000"
    metacritic: 58
    num_mflix_comments: 2
    plot: "Jeb Ward is an attorney who specializes in whistle blower, David vs. G…"
    poster: "https://m.media-amazon.com/images/M/MV5BNWY5Mjk4ZmItMTAzYS00NWE3LWEzYz…"
    rated: "R"
    released: 1991-03-15T00:00:00.000+00:00
    runtime: 110
    title: "Class Action"
    tomatoes: Object
    type: "movie"
    writers: Array (3)
    year: 1991
db.movies.aggregate([
{
"$search": {
"text": {
"query": "Class Action",
"path": "title"
}
}
},
{
"$project": {
"_id": 0,
"title": 1
}
}
])
[
{
title: 'Class Action'
}
]

O MongoDB Search devolveu o documento porque correspondeu o termo de query Class Action ao único token Class Action que ele cria para o texto no campo usando o analisador lucene.keyword. Por outro lado, o MongoDB Search não retorna nenhum resultado para a seguinte query:

db.cases.aggregate([
{
"$search": {
"text": {
"query": "action",
"path": "title"
}
}
}
])

Muitos documentos na coleção contêm a string action, mas o analisador keyword só corresponde aos documentos em que o termo de pesquisa corresponde exatamente a todo o conteúdo do campo . Para a query anterior, o analisador keyword não retornaria nenhum resultado. No entanto, se você indexar o campo usando o analisador padrão ou o analisador simples, o MongoDB Search retornará vários documentos nos resultados, incluindo o documento com o valor do campo de título Class Action, porque criaria tokens semelhantes aos seguintes, que seriam em seguida, corresponda ao termo de query:

Analisador
Tokens de saída
Partidas action
Partidas Class Action

Tokens do analisador de palavras-chave

Class Action

X

Tokens de analisador padrão

class, action

Tokens de analisador simples

class, action

Voltar

Whitespace