lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Satheesh.Akkinepally <>
Subject Re: [EXTERNAL] Re: Facet Sorting
Date Tue, 24 Jul 2018 06:00:43 GMT
Chris, I was trying the below method for sorting the faceted buckets but am seeing that the
function query query($q) applies only to the score from “q” parameter. My solr request
has a combination of q, “bq” and “bf” and it looks like the function query query($q)
is calculating the scores only on q and not on the aggregate score of q, bq and bf

My solr query is something like this


when I apply json facet with the below sort by score, only the scores calculated from q seem
to be applying and not the aggregate score of q,bf and bq

Am I missing anything here?

On 7/18/18, 3:45 PM, "Chris Hostetter" <> wrote:

    : If I want to plug in my own sorting for facets, what would be the best

    : approach. I know, out of the box, solr supports sort by facet count and

    : sort by alpha. I want to plug in my own sorting (say by relevancy). Is

    : there a way to do that? Where should I start with if I need to write a

    : Custom Facet Component?

    it sounds like you're talking about the "classic" facets (using

    "facet.field") where facet.sort only supports "count" (desc) and "index"


    Adding a custom sort option there would be close to impossible.

    The newer "json.facets" API supports a much more robust set of options,

    that includes the ability to sort on an "aggregate" function across all

    documents in the bucket...

    some of the existing sort options there might solve your need, but it's

    also possible using that API to write your own ValueSourceParser plugin

    that can be used to sort facets as long as it returns ValueSources that

    extend "AggValueSource"

    : Basically I want to plug the scores calculated in earlier steps for the

    : documents matched, do some kind of aggregation of the scores of the

    : documents that fall under a facet and use this aggregate score to rank

    IIUC what you want is possibly something like...

    curl http://localhost:8983/solr/techproducts/query -d 'q=features:lcd&rows=0&



         type : terms,

         field : cat,

         sort : { x : desc },


           x : "sum(query($q))",





    ...which will sort the buckets by the sum of the scores of every document

    in that bucket (using the original query .. but you could alternatively

    sort by any aggregation of the scores from any arbitrary query / document

    based function)


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message