Author: gttersen
Date: 2007-04-23 15:39:48 +0200 (Mon, 23 Apr 2007)
New Revision: 4853

Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
Log:
Fixes for newsAggregator

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
        2007-04-23 13:39:48 UTC (rev 4852)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
        2007-04-23 13:39:48 UTC (rev 4853)
@@ -73,7 +73,7 @@
             if (clusterId == null) {
                 return createClusteredSearchResult(config, getOffset(), 
result);
             } else {
-                return createSingleClusterResults(config, result);
+                return createSingleClusterResults(config, getOffset(), result);
             }
         } catch (IllegalType e) {
             LOG.error("Could not convert result", e);
@@ -87,19 +87,23 @@
     }
 
 
-    private FastSearchResult 
createSingleClusterResults(ClusteringESPFastConfiguration config, IQueryResult 
result) throws IllegalType, EmptyValueException {
+    private FastSearchResult 
createSingleClusterResults(ClusteringESPFastConfiguration config, int offset, 
IQueryResult result) throws IllegalType, EmptyValueException {
         final String nestedResultsField = config.getNestedResultsField();
         final FastSearchResult searchResult = new FastSearchResult(this);
         final HashMap<String, SearchResultItem> collapseMap = new 
HashMap<String, SearchResultItem>();
         searchResult.setHitCount(result.getDocCount());
-        for (int i = 0; i < result.getDocCount(); i++) {
+        int collectedHits = 0;
+        for (int i = offset; i < result.getDocCount(); i++) {
             try {
                 final IDocumentSummary document = result.getDocument(i + 1);
                 final String collapseId = 
document.getSummaryField("collapseid").getStringValue();
                 SearchResultItem parentResult = collapseMap.get(collapseId);
                 if (parentResult == null) {
-                    parentResult = addResult(config, searchResult, document);
-                    collapseMap.put(collapseId, parentResult);
+                    if (collapseMap.size() < config.getResultsToReturn()) {
+                        parentResult = addResult(config, searchResult, 
document);
+                        collapseMap.put(collapseId, parentResult);
+                        collectedHits++;
+                    }
                 } else {
                     SearchResult nestedResult = 
parentResult.getNestedSearchResult(nestedResultsField);
                     if (nestedResult == null) {
@@ -109,6 +113,7 @@
                     }
                     addResult(config, nestedResult, document);
                     nestedResult.setHitCount(nestedResult.getHitCount() + 1);
+                    collectedHits++;
                 }
             } catch (NullPointerException e) {
                 // The doc count is not 100% accurate.
@@ -116,6 +121,9 @@
                 break;
             }
         }
+        if (offset + collectedHits < result.getDocCount()) {
+            searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET, 
Integer.toString(offset + collectedHits));
+        }
         return searchResult;
     }
 

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

Reply via email to