J'essaie de trouver comment améliorer la notation des résultats de recherche solr. Mon application doit prendre le score des résultats solr et afficher un certain nombre d '"étoiles" en fonction de la qualité du résultat de la requête. 5 étoiles = presque/exact jusqu'à 0 étoiles ce qui signifie que la recherche ne correspond pas très bien, p. un seul élément frappe. Cependant, je reçois des scores de 1,4 à 0,8660254 tous les deux retournent des résultats que je donnerais 5 étoiles à. Ce que je dois faire est en quelque sorte de transformer ces résultats en un pourcentage afin que je puisse marquer ces résultats, avec le nombre correct d'étoiles.comment normaliser un score solr/lucene?
La requête que je cours qui me donne le score 1.4 est:
euallowed: true ET (grade: "2: 1")
La requête qui me donne le score 0,8660254 est:
euallowed: true eT (grade: "2: 1" ou de grade: "1er")
Je l'ai déjà mis à jour la similarité de sorte que le rendement et tf idf 1.0 comme je ne suis intér si un document a un terme, pas le numéro de ce terme dans le document. C'est ce que mon code de similitude ressemble:
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;
}
}
Je suppose que mes questions sont:
Quelle est la meilleure façon de normaliser le score afin que je puisse travailler sur la façon beaucoup « étoiles "à donner?
Existe-t-il un autre moyen de noter les résultats ?
Merci
Grant
Humm ... merci pour cela. Cela fait un très bon argument, mais je ne suis pas sûr de ce qui se passe quand je remplace tf et idf. Je pense que je pourrais devoir regarder ceci d'une manière différente. Même si cela ne signifie pas "marquer" par les étoiles. –