Khalid Abuhakmeh
Khalid Abuhakmeh

Reputation: 10839

SOLR sort by IN Query

I was wondering if it is possible to sort by the order that you request documents from SOLR. I am running a In based query and would just like SOLR to return them based on the order that I ask.

In (4,2,3,1) should return me documents ordered 4,2,3,1.

Thanks.

Upvotes: 2

Views: 1733

Answers (2)

FrenkyB
FrenkyB

Reputation: 7207

You can easily apply sorting with QueryOptions and field sort (ExtraParams property - I am sorting by savedate field, descending):

 var results = _solr.Query(textQuery,
                new QueryOptions
                {
                    Highlight = new HighlightingParameters
                    {
                        Fields = new[] { "*" },
                    },
                    ExtraParams = new Dictionary<string, string>
                    {
                        {"fq", dateQuery},
                        {"sort", "savedate desc"}
                    }
                });

Upvotes: 0

Jesvin Jose
Jesvin Jose

Reputation: 23098

You need Sorting in solr, to order them by field.

I assume that "In based query" means something like: fetch docs whose fieldx has values in (val1,val2). You can a field as multi-valued field and facet on that field. A facet query is a 'is in' search, out of the box (so to say) and it can do more sophisticated searches too.


Edited on OP's query:

Updating a document with a multi-valued field in JSON here. See the line

"my_multivalued_field": [ "aaa", "bbb" ]   /* use an array for a multi-valued field */

As for doing a facet query, check this.

You need to do one or more fq statements:

&fq=field1:[400 to 500]
&fq=field2:johnson,thompson

Also do read up on the fact (in link above) that you need to facet on stored rather than indexed fields.

Upvotes: 3

Related Questions