Author: gttersen
Date: 2007-03-15 18:13:16 +0100 (Thu, 15 Mar 2007)
New Revision: 4578
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/NewsAggregatorSearchConfiguration.java
Log:
Uppdate for nyheter.sesam.no
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
2007-03-14 16:44:57 UTC (rev 4577)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
2007-03-15 17:13:16 UTC (rev 4578)
@@ -6,12 +6,11 @@
import
no.schibstedsok.searchportal.mode.config.NewsAggregatorSearchConfiguration;
import no.schibstedsok.searchportal.result.BasicSearchResult;
import no.schibstedsok.searchportal.result.BasicSearchResultItem;
-import no.schibstedsok.searchportal.result.NewsAggregatorSearchResult;
-import no.schibstedsok.searchportal.result.SearchResult;
-import no.schibstedsok.searchportal.result.SearchResultItem;
import no.schibstedsok.searchportal.result.FastSearchResult;
import no.schibstedsok.searchportal.result.Modifier;
import no.schibstedsok.searchportal.result.Navigator;
+import no.schibstedsok.searchportal.result.SearchResult;
+import no.schibstedsok.searchportal.result.SearchResultItem;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
@@ -26,10 +25,15 @@
import java.util.HashMap;
import java.util.List;
+/**
+ * Search command that will try to get pregenerated clusters from xml files.
If the xml file is not available it will
+ * fall back to a search.
+ */
+public class NewsAggregatorSearchCommand extends NavigatableESPFastCommand {
-public class NewsAggregatorSearchCommand extends AbstractESPFastSearchCommand {
-
private final static Logger LOG =
Logger.getLogger(NewsAggregatorSearchCommand.class);
+ private static final String PARAM_GEONAV = "geonav";
+ private static final String PARAM_CLUSTER_ID = "clusterId";
/**
* @param cxt The context to execute in.
@@ -47,8 +51,8 @@
LOG.debug("Loading xml file at: " + config.getXmlSource());
LOG.debug("Update interval: " + config.getUpdateIntervalMinutes());
- StringDataObject geoNav = datamodel.getParameters().getValue("geonav");
- StringDataObject clusterId =
datamodel.getParameters().getValue("clusterId");
+ StringDataObject geoNav =
datamodel.getParameters().getValue(PARAM_GEONAV);
+ StringDataObject clusterId =
datamodel.getParameters().getValue(PARAM_CLUSTER_ID);
String xmlFile = geoNav == null ? config.getXmlMainFile() :
geoNav.getString();
@@ -78,10 +82,10 @@
LOG.debug("result-fields=" + config.getResultFields());
LOG.debug("query-server=" + config.getQueryServer());
LOG.debug("-----------------------------------------------");
- return null; //To change body of created methods use File | Settings
| File Templates.
+ SearchResult searchResult = super.execute();
+ return searchResult;
}
-
private SearchResult getPageResult(NewsAggregatorSearchConfiguration
config, String xmlFile) {
final NewsAggregatorXmlParser newsAggregatorXmlParser = new
NewsAggregatorXmlParser();
try {
@@ -225,7 +229,7 @@
private void handleCluster(Element cluster, SearchCommand
searchCommand, SearchResult searchResult) {
final SearchResultItem searchResultItem = new
BasicSearchResultItem();
searchResultItem.addField("size",
Integer.toString(Integer.parseInt(cluster.getAttributeValue(ATTRIBUTE_FULL_COUNT))
- 1));
- searchResultItem.addField("clusterId",
cluster.getAttributeValue(ATTRIBUTE_CLUSTERID));
+ searchResultItem.addField(PARAM_CLUSTER_ID,
cluster.getAttributeValue(ATTRIBUTE_CLUSTERID));
final Element entryCollectionElement =
cluster.getChild(ELEMENT_ENTRY_COLLECTION);
final List<Element> entryList =
entryCollectionElement.getChildren();
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/NewsAggregatorSearchConfiguration.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/NewsAggregatorSearchConfiguration.java
2007-03-14 16:44:57 UTC (rev 4577)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/NewsAggregatorSearchConfiguration.java
2007-03-15 17:13:16 UTC (rev 4578)
@@ -3,7 +3,7 @@
import org.apache.log4j.Logger;
-public class NewsAggregatorSearchConfiguration extends
ESPFastSearchConfiguration {
+public class NewsAggregatorSearchConfiguration extends
NavigatableESPFastConfiguration {
private final static Logger log =
Logger.getLogger(NewsAggregatorSearchConfiguration.class);
private String xmlSource;
Added:
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
===================================================================
---
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
(rev 0)
+++
trunk/query-transform-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
2007-03-15 17:13:16 UTC (rev 4578)
@@ -0,0 +1,81 @@
+package no.schibstedsok.searchportal.query.transform;
+
+import no.schibstedsok.searchportal.query.Clause;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
+
+import java.util.Calendar;
+import java.util.Map;
+import java.text.SimpleDateFormat;
+
+public class NewsClusterQueryTransformer extends AbstractQueryTransformer {
+ private final SimpleDateFormat sdf = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ private final static Logger LOG =
Logger.getLogger(NewsClusterQueryTransformer.class);
+ private static final String PARAM_FIELDS ="param-fields";
+ private static final String CLUSTER_FIELD="cluster-field";
+ private static final String CLUSTER_ID_FIELD="cluster-id-field";
+ private static final String TIMESTAMP_FIELD="timestamp-field";
+ private static final String MAX_AGE_IN_DAYS="max-age-in-days";
+
+ private String[] paramFields;
+ private String timestampField;
+ private String clusterField;
+ private String clusterIdField = "clusterId";
+ private int maxAgeInDays = 7;
+
+ public void visitImpl(final Clause clause) {
+ // No transformation, only filter
+ }
+
+ @Override
+ public String getFilter(final Map parameters) {
+ StringBuilder filter = new StringBuilder();
+ for (String paramField : paramFields) {
+ Object paramValue = parameters.get(paramField);
+ LOG.debug("Adding param from datamodel: " + paramField + "=" +
paramValue);
+ if (paramValue != null && paramValue instanceof String) {
+ filter.append(paramField).append(':');
+ filter.append('\"').append((String) paramValue).append('\"');
+ filter.append(" and ");
+ }
+ }
+ Object clusterId = parameters.get(clusterIdField);
+ if (clusterId != null && clusterId instanceof String) {
+ filter.append("cluster:").append('\"').append((String)
clusterId).append("\" ");
+ } else {
+ filter.append("cluster:range(1,max) ");
+ }
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DAY_OF_WEEK, -maxAgeInDays);
+ filter.append("and ").append(timestampField).append(':');
+
filter.append("range(").append(sdf.format(calendar.getTime())).append(",max)");
+ return filter.toString();
+ }
+
+ @Override
+ public QueryTransformer readQueryTransformer(final Element element) {
+ paramFields =
StringUtils.split(element.getAttribute(PARAM_FIELDS),",");
+ clusterField = element.getAttribute(CLUSTER_FIELD);
+ timestampField = element.getAttribute(TIMESTAMP_FIELD);
+ clusterIdField = element.getAttribute(CLUSTER_ID_FIELD);
+ final String maxAge = element.getAttribute(MAX_AGE_IN_DAYS);
+ if (maxAge != null) {
+ maxAgeInDays = Integer.parseInt(maxAge);
+ }
+ return this;
+ }
+
+ @Override
+ public Object clone() throws CloneNotSupportedException {
+ final NewsClusterQueryTransformer ncqt = (NewsClusterQueryTransformer)
super.clone();
+ ncqt.paramFields = paramFields;
+ ncqt.clusterField = clusterField;
+ ncqt.maxAgeInDays = maxAgeInDays;
+ ncqt.timestampField = timestampField;
+ ncqt.clusterIdField = clusterIdField;
+ return ncqt;
+ }
+
+}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits