2014-08-28 3 views
3

Ainsi, chaque résultat de recherche SOLR a son propre score de pertinence:filtre de recherche SOLR par pertinence marquer

https://wiki.apache.org/solr/SolrRelevancyFAQ

« Comment puis-je voir les scores de pertinence pour les résultats de recherche

Demande que le pseudo -field nommé « score » être retourné en l'ajoutant au fl des paramètres (liste des champs). le « score » apparaît alors le long avec les champs stockés dans les documents retournés. q = Justice League & fl = *, score "

Ma question est ... est-il possible de filtrer les résultats SOLR par ce score de pertinence?

Par exemple. effectuer une requête dans la nature de ce qui suit

Search for keyword "LOL" and only fetch documents whose relevancy score > 50 

S'il est possible comment iriez-vous sur la définition de cette requête syntaxiquement?

Répondre

1

Vous pouvez spécifier un nombre maximal de résultats à retourner. Les résultats apparaîtront dans l'ordre décroissant par score, de sorte que vous pouvez arrêter le traitement à un point spécifique du jeu de résultats.

solr/search/select?q=LOL&&start=0&rows=10&fl=*%2Cscore 

Voir l'article suivant pour une discussion sur la fixation d'un score minimum: Is it possible to set a Solr Score threshold 'reasonably', independent of results returned? (i.e. Is Solr Scoring standardized in any way)

2

J'ai passé des heures à essayer de filtrer les valeurs avec un score de pertinence de 0. Je ne pouvais trouver aucune voie à suivre directement à fais ceci. J'ai fini par accomplir ceci avec une solution de contournement qui assigne la fonction de requête à un param local. J'appelle ce param local à la fois dans la requête ("q =") et dans la requête de filtre ("fq =").

Exemple

Disons que vous avez une question comme:

q={!func}sum(*your arguments*) 

Tout d'abord, faire la composante fonction de son propre paramètre:

q={!func}$localParam 
&localParam={!func}sum(*your arguments*) 

Maintenant, pour revenir seulement des résultats avec des scores entre 1 et 10 ajoutez simplement une requête de filtre sur ce localParam:

q={!func}$localParam 
&localParam={!func}sum(*your arguments*) 
&fq={!frange l=1 u=10 inclusive=true}$localParam 
Questions connexes