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