como normalizo uma pontuação solr / lucene?

Estou tentando descobrir como melhorar a pontuação dos resultados de pesquisa do solr. Meu aplicativo precisa obter a pontuação dos resultados do solr e exibir um número de "estrelas", dependendo de quão bons são os resultados para a consulta. 5 Estrelas = quase / exato até 0 estrelas, o que significa que não corresponde muito bem à pesquisa, por exemplo apenas um elemento é atingido. No entanto, estou obtendo pontuações de 1,4 a 0,8660254, ambos estão retornando resultados aos quais eu daria 5 estrelas. O que eu preciso fazer é, de alguma forma, transformar esses resultados em uma porcentagem para que eu possa marcar esses resultados, com o número correto de estrelas.

A consulta que eu executo que me dá a pontuação 1.4 é:

euallowed: true AND (nota: "2: 1")

A consulta que me fornece a pontuação de 0,8660254 é:

euallowed: true AND (nota: "2: 1" OU nota: "1st")

Eu já atualizei a Similaridade para que o tf e o idf retornem 1.0, pois só estou interessado se um documento tiver um termo, não o número desse termo no documento. É assim que meu código de similaridade se parece:

import org.apache.lucene.search.Similarity;

public class StudentSearchSimilarity extends Similarity {

    @Override
    public float lengthNorm(String fieldName, int numTerms) {
        return (float) (1.0 / Math.sqrt(numTerms));
    }

    @Override
    public float queryNorm(float sumOfSquaredWeights) {

        return (float) (1.0 / Math.sqrt(sumOfSquaredWeights));

    }

    @Override
    public float sloppyFreq(int distance) {
        return 1.0f / (distance + 1);
    }

    @Override
    public float tf(float freq) {
        return (float) 1.0;
    }

    @Override
    public float idf(int docFreq, int numDocs) {

        //return (float) (Math.log(numDocs / (double) (docFreq + 1)) + 1.0);
        return (float)1.0;

    }

    @Override
    public float coord(int overlap, int maxOverlap) {
        return overlap / (float) maxOverlap;
    }
}

Então, suponho que minhas perguntas sejam:

Qual é a melhor maneira de normalizar a pontuação para que eu possa descobrir quantas "estrelas" dar?

Existe outra maneira de pontuar os resultados?

obrigado

Conceder

questionAnswers(3)

yourAnswerToTheQuestion