2010-10-01 7 views
3

J'ai requête solr qui retourne simplement les éléments les plus récents dans l'index. Cependant j'essaie de façon optionnelle si les catégories sont passées en ayant le champ de catégorie pondéré de sorte que s'il y a des correspondances pour le champ catégorie alors celles-ci sont pondérées plus haut mais ont toujours celles sans catégories.Trier résultat solr en pondérant certains éléments

de sorte que la structure du document ressemble à ceci:

{id:1, title:"sometitle", category:['cat1','cat2']},{id:1, title:"sometitle", category:[]} 

ma requête générale est quelque chose comme:

title:* 

mais si les catégories sont passés dans je ferais le même titre: * requête mais je voudrais que les résultats soient triés de telle sorte que les résultats avec les champs de catégorie qui correspondent aux catégories passées soient pondérés plus élevés

J'ai essayé la requête de poussée (bq) mais cela n'a pas wo rk (ce qui est logique car ma requête est de renvoyer tout) et je trier primaire par score et faire un tri secondaire sur un champ "créé"

Répondre

3

Si je comprends bien votre question, vous voulez que certains documents soient notés plus haut indépendamment de votre requête, non? Ces documents qui ont des catégories en eux devraient être mieux que ceux sans catégories?

Si c'est ce que vous voulez, voir: How can I increase the score for specific documents?. Vous pouvez également demander d'augmenter les choses uniquement si vous les recherchez. Votre requête doit être

+(title:"title to search for") category:"categories to boost" 

Ce ne trouvera que des choses qui correspondent au titre, mais il augmentera le score si elle a une catégorie que vous avez inclus dans cette requête.

Questions connexes