Author: gttersen
Date: 2007-03-20 13:40:29 +0100 (Tue, 20 Mar 2007)
New Revision: 4591

Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
Log:
Temp commit...

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-20 12:02:05 UTC (rev 4590)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
     2007-03-20 12:40:29 UTC (rev 4591)
@@ -1,6 +1,12 @@
 // Copyright (2007) Schibsted Søk AS
 package no.schibstedsok.searchportal.mode.command;
 
+import com.fastsearch.esp.search.query.BaseParameter;
+import com.fastsearch.esp.search.query.IQuery;
+import com.fastsearch.esp.search.result.EmptyValueException;
+import com.fastsearch.esp.search.result.IDocumentSummary;
+import com.fastsearch.esp.search.result.IQueryResult;
+import com.fastsearch.esp.search.result.IllegalType;
 import no.schibstedsok.searchportal.datamodel.generic.StringDataObject;
 import 
no.schibstedsok.searchportal.mode.config.NewsAggregatorSearchConfiguration;
 import no.schibstedsok.searchportal.result.BasicSearchResult;
@@ -75,6 +81,25 @@
         return search(config, clusterId.getString());
     }
 
+    /**
+     * Modifies several queryParameters depending on situation.
+     *
+     * @param query the FAST IQuery to modify
+     */
+    protected void modifyQuery(IQuery query) {
+        StringDataObject clusterId = 
datamodel.getParameters().getValue(PARAM_CLUSTER_ID);
+        if (clusterId == null) {
+            final int resultsPerCluster = 4;
+            final int resultCount = 
getSearchConfiguration().getResultsToReturn() * resultsPerCluster;
+
+            query.setParameter("collapseon", "batv" + "cluster");
+            query.setParameter("collapsenum", resultsPerCluster);
+            query.setParameter(BaseParameter.HITS, resultCount);
+        } else {
+//            query.setParameter(new SearchParameter());
+        }
+    }
+
     private SearchResult search(NewsAggregatorSearchConfiguration config, 
String clusterId) {
         LOG.debug("------ Running search to get clusters ---------");
         LOG.debug("clusterId=" + clusterId);
@@ -82,9 +107,56 @@
         LOG.debug("query-server=" + config.getQueryServer());
         LOG.debug("-----------------------------------------------");
         SearchResult searchResult = super.execute();
+
         return searchResult;
     }
 
+    protected FastSearchResult createSearchResult(final IQueryResult result) 
throws IOException {
+        StringDataObject clusterId = 
datamodel.getParameters().getValue(PARAM_CLUSTER_ID);
+        if (clusterId == null) {
+            try {
+                final FastSearchResult searchResult = new 
FastSearchResult(this);
+                //        final int cnt = getCurrentOffset(0);
+                //        final int maxIndex = Math.min(cnt + 
getSearchConfiguration().getResultsToReturn(), result.getDocCount());
+                final int maxClusterCount = 
getSearchConfiguration().getResultsToReturn();
+                int collectedClusters = 0;
+                int collectedHits = 0;
+                int currentClusterId = 0;
+                int lastClusterId = 0;
+
+                for (int i = 0; i < result.getDocCount(); i++) {
+                    try {
+                        final IDocumentSummary document = result.getDocument(i 
+ 1);
+                        currentClusterId = 
document.getSummaryField("cluster").getIntValue();
+                        addResult(searchResult, document, lastClusterId);
+                        if (currentClusterId != lastClusterId) {
+                            collectedClusters++;
+
+                        }
+
+                    } catch (NullPointerException e) { // The doc count is not 
100% accurate.
+                        LOG.debug("Error finding document " + e);
+                        break;
+                    }
+                }
+                searchResult.setHitCount(collectedHits);
+                return searchResult;
+            } catch (IllegalType e) {
+                LOG.error("Could not convert result", e);
+            } catch (EmptyValueException e) {
+                LOG.error("Could not convert result", e);
+            }
+            // Falling back to super implementation, because this one does not 
work.
+            return super.createSearchResult(result);
+        } else {
+            return super.createSearchResult(result);
+        }
+    }
+
+    private int addResult(FastSearchResult searchResult, IDocumentSummary 
document, int lastClusterId) {
+        return 0;
+    }
+
     private SearchResult getPageResult(NewsAggregatorSearchConfiguration 
config, String xmlFile) {
         final NewsAggregatorXmlParser newsAggregatorXmlParser = new 
NewsAggregatorXmlParser();
         try {

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

Reply via email to