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

Classificar os documentos nos resultados

A cada documento retornado por uma query do MongoDB Search ou do MongoDB 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 no seu pipeline de agregação.

  • Para a fase $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.

  • Para a fase $vectorSearch, o campo score aceita a expressão $meta, que requer o valor vectorSearchScore para retornar a pontuação de cada documento nos resultados da sua 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 de Vector Search do MongoDB.

A pontuação atribuída a um documento retornado faz parte dos metadados do documento. Você pode usar uma fase $project no 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 o seguinte:

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

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

  • Tipo de operador ou analisador que uma query do MongoDB Search usa.

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

Além do comportamento de pontuação padrão, o MongoDB 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 MongoDB 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 saber mais, consulte Classificar Resultados da Pesquisa MongoDB e Classificar por Exemplos de Pontuação.

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

Ao executar query de valores de array, o MongoDB 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 MongoDB Search, consulte as seguintes páginas:

Para obter exemplos sobre como usar o campo score em algumas consultas comuns do MongoDB Search, consulte as seguintes páginas:

Voltar

opções de pesquisa

Nesta página