I'm working with Java and SolrJ on Eclipse. How can I sort the results of a SolrQuery by occurrency of values on a certain field? For example, when I search top n articles (docType=0) of a particular author I want to sort query results by frequency of values in the journal_facet field (type String).If a certain author X has written:2 articles (a0, a1) in the journal named J03 articles (a2, a3, a4) in the journal named J11 article (a5) in the journal named J2Order has to be a2, a3, a4, a0, a1, a5 and I want to show results in the following way<doc> <arr name="author"> <str>X</str> </arr> <str name="title">a2</str> <str name="journal">J1</str> </doc> <doc> <arr name="author"> <str>X</str> </arr> <str name="title">a3</str> <str name="journal">J1</str> </doc> <doc> <arr name="author"> <str>X</str> </arr> <str name="title">a4</str> <str name="journal">J1</str> </doc> <doc> <arr name="author"> <str>X</str> </arr> <str name="title">a0</str> <str name="journal">J0</str> </doc> <doc> <arr name="author"> <str>X</str> </arr> <str name="title">a1</str> <str name="journal">J0</str> </doc> <doc> <arr name="author"> <str>X</str> </arr> <str name="title">a5</str> <str name="journal">J2</str> </doc>My query isSolrServer solrServer = new HttpSolrServer(urlString); SolrQuery query = new SolrQuery(); query.set("q", "docType:0); query.set("fq", "author:X"); query.set("fl", "author, title, journal"); query.setRows(n); ... QueryResponse response = solrServer.query(query); SolrDocumentList results = response.getResults();and in my Solr schema.xml there are the following fields and types<types> ... <fieldType name="text_title" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <charFilter class="solr.HTMLStripCharFilterFactory" /> <filter class="solr.ASCIIFoldingFilterFactory" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1" stemEnglishPossessive="1" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> <filter class="solr.KStemFilterFactory" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <filter class="solr.ASCIIFoldingFilterFactory" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" stemEnglishPossessive="1" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.KStemFilterFactory" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> </fieldType>
<fieldType name="text_name" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <charFilter class="solr.HTMLStripCharFilterFactory" /> <filter class="solr.ASCIIFoldingFilterFactory" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <!-- n-grams utile per la ricerca per prefisso" --> <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> <!-- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> --> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <filter class="solr.ASCIIFoldingFilterFactory" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <!-- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> --> </analyzer> </fieldType> </types> <fields> <field name="docType" type="tint" indexed="true" stored="true" multiValued="false" required="true" /> <field name="key" type="string" indexed="true" stored="true" multiValued="false" required="true" /> <field name="mdate" type="date" indexed="true" stored="true" multiValued="false" required="true" /> ... <field name="author" type="text_name" indexed="true" stored="true" multiValued="true" /> ... <field name="journal" type="text_title" indexed="true" stored="true" multiValued="false" /> <field name="title" type="text_title" indexed="true" stored="true" multiValued="false" /> ... <field name="journal_facet" type="string" indexed="true" stored="true" multiValued="false" /> ... <copyField dest="journal_facet" source="journal" /> ... </fields>Thanks a lot for your help, Luca