[
https://issues.apache.org/jira/browse/SOLR-3926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eirik Lygre updated SOLR-3926:
------------------------------
Affects Version/s: (was: 4.0-BETA)
4.0
> solrj should support better way of finding active sorts
> -------------------------------------------------------
>
> Key: SOLR-3926
> URL: https://issues.apache.org/jira/browse/SOLR-3926
> Project: Solr
> Issue Type: Improvement
> Components: clients - java
> Affects Versions: 4.0
> Reporter: Eirik Lygre
> Priority: Minor
>
> The Solrj api uses ortogonal concepts for setting/removing and getting sort
> information. Setting/removing uses a combination of (name,order), while
> getters return a String "name order":
> {code}
> public SolrQuery setSortField(String field, ORDER order);
> public SolrQuery addSortField(String field, ORDER order);
> public SolrQuery removeSortField(String field, ORDER order);
> public String[] getSortFields();
> public String getSortField();
> {code}
> If you want to use the current sort information to present a list of active
> sorts, with the possibility to remove then, you need to manually parse the
> string(s) returned from getSortFields, to recreate the information required
> by removeSortField(). Not difficult, but not convenient either :-)
> Therefore this suggestion: Add a new method {{public Map<String,ORDER>
> getSortFieldMap();}} which returns an ordered map of active sort fields. An
> example implementation is shown below (here as a utility method living
> outside SolrQuery; the rewrite should be trivial)
> {code}
> public Map<String, ORDER> getSortFieldMap(SolrQuery query) {
> String[] actualSortFields = query.getSortFields();
> if (actualSortFields == null || actualSortFields.length == 0)
> return Collections.emptyMap();
> Map<String, ORDER> sortFieldMap = new LinkedHashMap<String, ORDER>();
> for (String sortField : actualSortFields) {
> String[] fieldSpec = sortField.split(" ");
> sortFieldMap.put(fieldSpec[0], ORDER.valueOf(fieldSpec[1]));
> }
> return sortFieldMap;
> }
> {code}
> For what it's worth, this is possible client code:
> {code}
> System.out.println("Active sorts");
> Map<String, ORDER> fieldMap = getSortFieldMap(query);
> for (String field : fieldMap.keySet()) {
> System.out.println("- " + field + "; dir=" + fieldMap.get(field));
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]