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

Classificar os documentos nos resultados

A cada documento retornado por uma query do Atlas Search ou Atlas Vector Search é atribuída uma pontuação com base na relevância, e os documentos incluídos em um conjunto de resultados são retornados na ordem da pontuação mais alta para a mais baixa.

Para incluir a pontuação de cada documento em seus resultados de pesquisa, use o estágio $project em seu pipeline de agregação.

  • Para o estágio $search, o campo score recebe a expressão $meta, que requer o valor searchScore. Você também pode especificar o valor searchScoreDetails para a expressão $meta do campo scoreDetails para obter uma análise detalhada da pontuação.

    Observação

    Se você distribuiu nós de pesquisa, considere o seguinte:

    • Evite classificar os resultados por searchScore porque ele pode ser diferente em todos os nós de pesquisa.

    • Para calcular searchScore, um host leva em consideração todos os documentos existentes nele, incluindo documentos excluídos que ainda não foram removidos do índice. Como a exclusão ocorre de forma independente em cada host, isso pode causar alterações em searchScore dependendo de para qual host a query é roteada.

    Para oferecer suporte à paginação ao classificar por searchScore nos nós de pesquisa, vote nesta solicitação no MongoDB Feedback Engine.

  • Para o estágio $vectorSearch, o campo score usa a expressão $meta, que requer o valor vectorSearchScore para retornar a pontuação de cada documento em seus resultados de pesquisa vetorial.

Exemplo

A query a seguir utiliza um estágio $project para adicionar um campo chamado score aos documentos retornados:

1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 <operator-specification>
6 }
7 }
8 },
9 {
10 "$project": {
11 "<field-to-include>": 1,
12 "<field-to-exclude>": 0,
13 "score": { "$meta": "searchScore" }
14 }
15 }
16])
1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 <operator-specification>
6 },
7 "scoreDetails": true
8 }
9 },
10 {
11 "$project": {
12 "<field-to-include>": 1,
13 "<field-to-exclude>": 0,
14 "scoreDetails": { "$meta": "searchScoreDetails" }
15 }
16 }
17])

Para saber mais, consulte retornar os detalhes da pontuação de pesquisa.

1db.movies.aggregate([
2 {
3 "$vectorSearch": {
4 <query-syntax>
5 }
6 },
7 {
8 "$project": {
9 "<field-to-include>": 1,
10 "<field-to-exclude>": 0,
11 "score": { "$meta": "vectorSearchScore" }
12 }
13 }
14])

Para saber mais, consulte Pontuação do Atlas Vector Search.

A pontuação atribuída a um documento retornado faz parte dos metadados do documento. Você pode usar um $project estágio em seu pipeline de agregação para incluir a pontuação de cada documento retornado junto com o conjunto de resultados. Os documentos retornam da pontuação mais alta para a mais baixa. Muitos fatores podem influenciar a pontuação de um documento, incluindo os seguintes:

  • Posição do termo de pesquisa no documento.

  • Frequência de ocorrência do termo no documento.

  • Tipo de operador ou analisador que uma query do Atlas Search utiliza.

Para saber mais sobre o algoritmo de pontuação Lucene, consulte a documentação do Lucene.

Além do comportamento de pontuação padrão, o Atlas Search oferece suporte às seguintes opções:

Se vários documentos nos resultados tiverem pontuações idênticas, a ordem dos documentos nos resultados não será determinística. Se você quiser que os resultados do Atlas Search tenham uma ordem determinada, inclua a opção de classificação em seu estágio $search para classificar os resultados por um campo exclusivo. Você pode usar a opção de classificação para também retornar uma classificação ascendente dos resultados por pontuação. Para mais informações, consulte Classificar Resultados da Atlas Search e Classificar por Exemplos de Pontuação.

Em nós de pesquisa separados, cada nó atribui documentos diferentes IDs Lucene internos usados para classificação quando as pontuações são idênticas. Ao classificar e paginar resultados, o mongot processo no nó que está processando a query pode incluir documentos de outros nós se seus IDs internos tiverem ordem de paginação maior do que o token. Para evitar isso, use $match após para excluir documentos $search por _id seu.

Ao fazer query de valores de array, o Atlas Search atribui a mesma pontuação, independentemente de quantos valores na array correspondem à query.

Para obter exemplos sobre como usar opções adicionais score em suas queries no Atlas Search , consulte as seguintes páginas:

Para obter exemplos de como usar o campo score em algumas queries comuns do Atlas Search , consulte as seguintes páginas:

Voltar

opções de pesquisa

Nesta página