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