3
respostas

Cálculo do score

Pessoal, por que resultados que possuem o mesmo match apresentam scores diferentes? Como é feito esse cálculo?

Por exemplo, a query

GET produtos/v1/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "tags": "digital"
        }}
      ]
    }
  }
}

retorna

"hits": [
      {
        "_index": "produtos",
        "_type": "v1",
        "_id": "AV7AqGDDivuJLC6cDv2t",
        "_score": 0.6160039,
        "_source": {
          "nome": "Big Data: Técnicas e tecnologias para extração de valor dos dados",
          "categoria": "Livros",
          "subcategoria": "Tecnologia",
          "tags": [
            "impresso",
            "digital",
            "larga escala",
            "computação"
          ],
          "fornecedor": "Casa do Código",
          "preco": 49.9
        }
      },
      {
        "_index": "produtos",
        "_type": "v1",
        "_id": "AV7AqGETivuJLC6cDv2u",
        "_score": 0.51188517,
        "_source": {
          "nome": "A história do futebol brasileiro",
          "categoria": "Livros",
          "subcategoria": "Esportes",
          "tags": [
            "impresso",
            "digital",
            "esportes",
            "futebol"
          ],
          "fornecedor": "Casa do Código",
          "preco": 59.9
        }
      },
      {
        "_index": "produtos",
        "_type": "v1",
        "_id": "AV7AqGBOivuJLC6cDv2s",
        "_score": 0.4007783,
        "_source": {
          "nome": "Scala: Como escalar sua produtividade",
          "categoria": "Livros",
          "subcategoria": "Tecnologia",
          "tags": [
            "impresso",
            "digital",
            "scala",
            "programação funcional",
            "computação",
            "imutabilidade"
          ],
          "fornecedor": "Casa do Código",
          "preco": 69.9
        }
      }
    ]
3 respostas

Até vejo sentido do terceiro produto ter ficado com o menor score, considerando que o match ocorreu em um elemento de uma lista de seis. Entretanto, comparando os dois primeiros produtos, os matches ocorreram na mesma posição de listas de mesmo tamanho.

Mesmo explorando os conceitos envolvidos no relevance scoring, conforme transcrito abaixo, não encontrei motivo para tal diferença de score.

Theory Behind Relevance Scoringedit Lucene (and thus Elasticsearch) uses the Boolean model to find matching documents, and a formula called the practical scoring function to calculate relevance. This formula borrows concepts from term frequency/inverse document frequency and the vector space model but adds more-modern features like a coordination factor, field length normalization, and term or query clause boosting. https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html

Oi José, tudo bem ?

Entendo seu ponto de discussão, mas acredito que quanto mais qualificado sejam os dados melhor o score deveria ficar, talvez esteja faltando esse tipo de coisa nesses dados, vou dar uma olhada no curso para tentar te ajudar melhor.