Author: ssmiweve
Date: 2008-11-19 14:47:31 +0100 (Wed, 19 Nov 2008)
New Revision: 6951

Modified:
   
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
   
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
   trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml
   trunk/generic.sesam/war/src/main/conf/modes.xml
Log:
Solr sorting
 SEARCH-5172


Modified: 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
===================================================================
--- 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
  2008-11-19 08:25:10 UTC (rev 6950)
+++ 
trunk/generic.sesam/search-command-config/src/main/java/no/sesat/search/mode/config/SolrCommandConfig.java
  2008-11-19 13:47:31 UTC (rev 6951)
@@ -21,10 +21,11 @@
 
 package no.sesat.search.mode.config;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import no.sesat.search.mode.SearchModeFactory.Context;
 import no.sesat.search.mode.config.CommandConfig.Controller;
-import no.sesat.search.site.config.AbstractDocumentFactory;
-import no.sesat.search.site.config.AbstractDocumentFactory.ParseType;
 import org.w3c.dom.Element;
 
 /** Searching against a Solr index using the Solrj client.
@@ -39,13 +40,12 @@
 
     // Attributes ----------------------------------------------------
 
-    /**
-     * Holds value of property key for serverUrl.
-     */
     private String serverUrl = "";
 
     private String filteringQuery = "";
 
+    private final Map<String,String> sort = new HashMap<String,String>();
+
     // Static --------------------------------------------------------
 
     // Constructors --------------------------------------------------
@@ -91,6 +91,53 @@
         this.filteringQuery = filteringQuery;
     }
 
+    /** @see #setFieldFilters(java.lang.String[])
+     *
+     * @return Value of map property sort.
+     */
+    public Map<String,String> getSortMap() {
+        return Collections.unmodifiableMap(sort);
+    }
+
+    public void clearSort(){
+        sort.clear();
+    }
+
+    /**
+     * Syntax: sort="fieldName1 asc, fieldName2 desc"
+     *
+     * Just "fieldName1" will presume ascending (asc) order.
+     *
+     * @param sortFields Array of sort fields.
+     */
+    public void setSort(final String[] sortFields) {
+
+        for (String string : sortFields) {
+            setSort(string);
+        }
+    }
+
+    @Override
+    public SearchConfiguration readSearchConfiguration(
+            final Element element,
+            final SearchConfiguration inherit,
+            final Context context) {
+
+        if(null!=inherit && inherit instanceof SolrCommandConfig){
+            sort.putAll(((SolrCommandConfig)inherit).getSortMap());
+        }
+
+        ModesSearchConfigurationDeserializer.readSearchConfiguration(this, 
element, inherit);
+
+        if (element.hasAttribute("sort")) {
+            if (element.getAttribute("sort").length() == 0) {
+               clearSort();
+            }
+        }
+
+        return this;
+    }
+
     // Z implementation ----------------------------------------------
 
     // Y overrides ---------------------------------------------------
@@ -101,6 +148,13 @@
 
     // Private -------------------------------------------------------
 
+    private void setSort(final String sortFieldAndOrder) {
+
+        final String parsed[] = sortFieldAndOrder.trim().split(" ");
+        final String field = parsed[0].trim();
+        sort.put(field, (parsed.length > 1) ? parsed[1].trim() : "asc");
+    }
+
     // Inner classes -------------------------------------------------
 
 }

Modified: 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
===================================================================
--- 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
        2008-11-19 08:25:10 UTC (rev 6950)
+++ 
trunk/generic.sesam/search-command-control/default/src/main/java/no/sesat/search/mode/command/SolrSearchCommand.java
        2008-11-19 13:47:31 UTC (rev 6951)
@@ -102,6 +102,12 @@
                     .setRows(getSearchConfiguration().getResultsToReturn())
                     
.setFields(getSearchConfiguration().getResultFieldMap().keySet().toArray(new 
String[]{}));
 
+            final Map<String,String> sortMap = 
getSearchConfiguration().getSortMap();
+            for(Map.Entry<String,String> entry : sortMap.entrySet()){
+                final SolrQuery.ORDER order = 
SolrQuery.ORDER.valueOf(entry.getValue());
+                query.addSortField(entry.getKey(), order);
+            }
+
             DUMP.info(query.toString());
 
             // query

Modified: trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml
===================================================================
--- trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml   2008-11-19 
08:25:10 UTC (rev 6950)
+++ trunk/generic.sesam/sesam.com/war/src/main/conf/modes.xml   2008-11-19 
13:47:31 UTC (rev 6951)
@@ -60,6 +60,7 @@
     <mode id="solrSuggestions" inherit="solrSuggestions">
         <solr-command id="solrSuggestions"
             filtering-query="list_name:common_english"
+            sort="list_entry"
             inherit="solrSuggestions"/>
      </mode>
 

Modified: trunk/generic.sesam/war/src/main/conf/modes.xml
===================================================================
--- trunk/generic.sesam/war/src/main/conf/modes.xml     2008-11-19 08:25:10 UTC 
(rev 6950)
+++ trunk/generic.sesam/war/src/main/conf/modes.xml     2008-11-19 13:47:31 UTC 
(rev 6951)
@@ -347,6 +347,7 @@
         <solr-command id="solrSuggestions"
                 result-fields="list_name,list_entry"
                 results-to-return="99"
+                sort="list_entry_length"
                 inherit="default-solr-command">
             <query-transformers>
                 <!-- The following works against a Solr configured field of 
type string named "list_entry". -->

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to