Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Personalize a pontuação dos documentos nos resultados

Você pode personalizar a pontuação dos documentos nos resultados. Ao ajustar a forma como as pontuações são calculadas, você pode garantir que os documentos mais relevantes sejam classificados em uma posição mais alta nos resultados da pesquisa. Para aprender mais sobre as diferentes maneiras de personalizar a pontuação, veja Classificar os documentos nos resultados. Esta página demonstra como:

  • Modifique a pontuação dos documentos nos resultados para aumentar ou diminuir os resultados.

  • Normalize sua pontuação de query $search na faixa de 0 a 1 nos estágios subsequentes do seu pipeline de agregação.

Uma query de pesquisa do MongoDB atribui a cada documento retornado uma pontuação com base em sua relevância. Os documentos incluídos em um conjunto de resultados retornam em ordem da pontuação mais alta para a mais baixa. Para saber mais, consulte Pontuação dos documentos nos resultados.

Você pode usar as seguintes opções com todos os operadores para modificar o comportamento padrão de pontuação. Para obter detalhes e exemplos, clique em qualquer uma das seguintes opções:

Esta seção demonstra como adicionar pesos aos campos de pesquisa para aumentar ou ocultar os documentos nos resultados ou em uma categoria de resultados. Especificamente, ele demonstra como atribuir um ou mais valores a um campo para retornar resultados com uma pontuação maior ou menor.

Você pode configurar um índice com mapeamentos dinâmicos ativados para indexar todos os campos na coleção. Como alternativa, use mapeamentos estáticos nos campos que você deseja query e classificar os resultados. Para saber mais sobre como criar índices de pesquisa do MongoDB Search, consulte Gerenciar índices de pesquisa do MongoDB Search.

As queries de amostra demonstram como impulsionar ou enterrar os documentos nos resultados. Eles usam o operador composto para combinar dois ou mais operadores em uma única query.

Você pode normalizar sua pontuação de query do $search no intervalo de 0 a 1 nos estágios subsequentes do seu pipeline de agregação. Você pode usar os seguintes estágios após o estágio $search na seguinte ordem para normalizar a pontuação:

  • $addFields

    {
    "$addFields": {
    "score": {
    "$meta": "searchScore"
    }
    }
    }
  • $setWindowFields

    {
    "$setWindowFields": {
    "output": {
    "maxScore": {
    "$max": "$score"
    }
    }
    }
    }
  • $addFields

    {
    "$addFields": {
    "normalizedScore": {
    "$divide": [
    "$score", "$maxScore"
    ]
    }
    }
    }
1db.movies.aggregate([{
2 "$search": {
3 "text": {
4 "query": "Helsinki",
5 "path": "plot"
6 }
7 }
8 },
9 {
10 "$limit": 5
11 },
12 {
13 "$project": {
14 "_id": 0,
15 "title": 1,
16 "score": 1,
17 "maxScore": 1,
18 "normalizedScore": 1
19 }
20 },
21 {
22 "$addFields": {
23 "score": {
24 "$meta": "searchScore"
25 }
26 }
27 },
28 {
29 "$setWindowFields": {
30 "output": {
31 "maxScore": {
32 "$max": "$score"
33 }
34 }
35 }
36 },
37 {
38 "$addFields": {
39 "normalizedScore": {
40 "$divide": [
41 "$score", "$maxScore"
42 ]
43 }
44 }
45}])
1[
2 {
3 title: 'Drifting Clouds',
4 score: 4.5660295486450195,
5 maxScore: 4.5660295486450195,
6 normalizedScore: 1
7 },
8 {
9 title: 'Sairaan kaunis maailma',
10 score: 4.041563034057617,
11 maxScore: 4.5660295486450195,
12 normalizedScore: 0.8851372929150143
13 },
14 {
15 title: 'Bad Luck Love',
16 score: 3.6251673698425293,
17 maxScore: 4.5660295486450195,
18 normalizedScore: 0.79394303764817
19 },
20 {
21 title: 'Bad Luck Love',
22 score: 3.6251673698425293,
23 maxScore: 4.5660295486450195,
24 normalizedScore: 0.79394303764817
25 },
26 {
27 title: 'Forbidden Fruit',
28 score: 3.6251673698425293,
29 maxScore: 4.5660295486450195,
30 normalizedScore: 0.79394303764817
31 }
32]

Os resultados da pesquisa MongoDB contêm as seguintes pontuações:

  • The modified score for the $search query in the score field from the $addFields stage.

  • The maximum score assigned to the documents in the results in the maxScore field from the $setWindowFields stage.

  • The normalized score in the normalizedScore field from the $addFields stage. MongoDB computes this score by dividing the modified score in $score by the maximum score in $maxScore using $divide.

To learn more about compound queries using MongoDB Search, take Unit 9 of the Intro To MongoDB Course on MongoDB University. The 1.5-hour unit includes an overview of MongoDB Search. The unit also covers creating MongoDB Search indexes, running $search queries using compound operators, and grouping results using facet (MongoDB Search Operator).