2009-03-11 7 views
4

J'ai réussi à construire un index dans Solr que je peux rechercher sur un mot-clé, produire des facettes, des facettes de requête, etc. Tout cela fonctionne très bien. J'ai implémenté ma recherche à l'aide d'une requête dismax afin de rechercher des champs prédéterminés.Comment améliorer les résultats dans Solr Dismax requête

Cependant, mes résultats reviennent triés par score qui semble être calculé par pertinence de mot-clé seulement. Je voudrais ajuster le score où les champs ont des valeurs pré-déterminées. Je pense que je peux le faire avec la requête de boost et fonctions boost mais la documentation ici:

http://wiki.apache.org/solr/DisMaxRequestHandler#head-6862070cf279d9a09bdab971309135c7aea22fb3

est pas particulièrement utile. J'ai essayé d'ajouter l'ajout d'un argument bq à ma recherche:

&bq=media:DVD^2 

(! Oui, c'est un indice de films) mais je trouve quand je commence à ajouter de plus en plus:

&bq=media:DVD^2&bq=media:BLU-RAY^1.5 

Je trouve la résultats négatifs - par exemple les films qui sont DVD mais qui sont et non BLU-RAY sont affectés négativement dans leur score. À la fin, tout semble égaliser et mon score est tel qu'il était avant que je commence à stimuler.

Je dois me tromper et je me demande si la fonction "boost" arrive quelque part. Des idées sur la façon d'utiliser correctement boost?

Répondre

3

Apparemment, ceci est normal pour les films qui sont DVD mais qui ne sont pas BLU-RAY affectés négativement dans leur score. En effet, plus vous ajoutez de contraintes, plus la valeur queryNorm est réduite et toutes les partitions sont multipliées par cette valeur.

-1

Il semble que vous ayez besoin d'appliquer le boost au moment de l'index au lieu de l'heure de la requête. Donc, lorsque vous préparez des documents à ajouter à l'index, donnez à ceux qui sont DVD un coup de pouce de 2, et ceux qui sont Blu-Ray un coup de pouce de 1,5.

5

Ceci est un peu en retard et il semble que vous avez probablement déjà ce que vous cherchez, mais ...

Si vous êtes curieux de stimuler les fonctions (qui, à en juger par les résultats souhaités, je pense que vous devriez être), vous devriez vérifier l'argument bf au lieu de l'argument bq.

Essayez définissant l'argument bf à

media:DVD^2 media:BLU-RAY^1.5 

et je pense que cela pourrait obtenir ce que vous voulez.

Questions connexes