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.
Uso
To include the score of each document in your search results, use the $project stage in your aggregation pipeline.
For the
$vectorSearchstage, thescorefield takes the$metaexpression, which requires thevectorSearchScorevalue to return the score of each document in your vector search results.
Observação
Você pode usar:
searchScoresomente em consultas$searchvectorSearchScoreonly in$vectorSearchqueries
Se você usar searchScore e vectorSearchScore em qualquer outra query, o MongoDB registra um aviso a partir do MongoDB v8.2.
Exemplo
The following query uses a $project stage to add a field named score to the returned documents:
1 db.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 ])
1 db.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.
1 db.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 ])
To learn more, see MongoDB Vector Search Scoring.
Comportamento
The score assigned to a returned document is part of the document's metadata. You can use a $project stage in your aggregation pipeline to include each returned document's score along with the result set. Documents return from highest score to lowest. Many factors can influence a document's score, including the following:
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 Lucene, consulte a documentação do Lucene.
Opções adicionais
Além do comportamento de pontuação padrão, o MongoDB Search oferece suporte às seguintes opções:
Modificar a pontuação atribuída a certos documentos.
Retornando um detalhamento detalhado da pontuação usando a opção detalhes da pontuação.
Normalizando a pontuação da pesquisa.
Consideraçõ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.
On separate Search Nodes, each node assigns documents different internal Lucene IDs used for sorting when scores are identical. When sorting and paginating results, the mongot process on the node that is processing the query might include documents from other nodes if their internal IDs have greater pagination order than the token. To prevent this, use $match after $search to exclude documents by their _id.
Ao executar query de valores de array, o MongoDB Pesquisa atribui pontuações mais altas se mais valores na array corresponderem à query.
Tutorials
Para obter exemplos sobre como usar opções adicionais | |
Para obter exemplos sobre como usar o campo |