Author: gttersen
Date: 2007-04-19 13:24:20 +0200 (Thu, 19 Apr 2007)
New Revision: 4832
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
Log:
Changes for NewsAggregator
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
2007-04-18 18:59:52 UTC (rev 4831)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
2007-04-19 11:24:20 UTC (rev 4832)
@@ -799,8 +799,8 @@
fillBeanProperty(cefc, inherit, "clusterField",
ParseType.String, commandE, "cluster");
fillBeanProperty(cefc, inherit, "clusterMaxFetch",
ParseType.Int, commandE, "10");
fillBeanProperty(cefc, inherit, "nestedResultsField",
ParseType.String, commandE, "entries");
- fillBeanProperty(cefc, inherit, "userSortByField",
ParseType.String, commandE, "publishedtime");
- fillBeanProperty(cefc, inherit, "userSortByParameter",
ParseType.String, commandE, "sortBy");
+ fillBeanProperty(cefc, inherit, "userSortField",
ParseType.String, commandE, "publishedtime");
+ fillBeanProperty(cefc, inherit, "userSortParameter",
ParseType.String, commandE, "sort");
}
if (sc instanceof NewsAggregatorSearchConfiguration) {
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-18 18:59:52 UTC (rev 4831)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
2007-04-19 11:24:20 UTC (rev 4832)
@@ -22,6 +22,8 @@
import java.util.Map;
public class ClusteringESPFastCommand extends NavigatableESPFastCommand {
+ public static final String PARAM_NEXT_OFFSET = "nextOffset";
+
private static final Logger LOG =
Logger.getLogger(ClusteringESPFastCommand.class);
public ClusteringESPFastCommand(Context cxt) {
@@ -37,9 +39,10 @@
final ClusteringESPFastConfiguration config = getSearchConfiguration();
// Can not use the default sort functionality since it hardcodes field
name
- final StringDataObject sortBy =
datamodel.getParameters().getValue(config.getUserSortByParameter());
- if (sortBy != null) {
- query.setParameter(BaseParameter.SORT_BY, sortBy.getString());
+ final StringDataObject sort =
datamodel.getParameters().getValue(config.getUserSortParameter());
+ if (sort != null) {
+ query.setParameter(BaseParameter.SORT_BY,
config.getUserSortField());
+ query.setParameter(BaseParameter.SORT_DIRECTION, sort.getString());
}
final StringDataObject clusterId =
datamodel.getParameters().getValue(config.getClusterIdParameter());
@@ -68,7 +71,7 @@
final ClusteringESPFastConfiguration config =
getSearchConfiguration();
StringDataObject clusterId =
datamodel.getParameters().getValue(config.getClusterIdParameter());
if (clusterId == null) {
- return createClusteredSearchResult(config, result);
+ return createClusteredSearchResult(config, getOffset(),
result);
} else {
return createSingleClusterResults(config, result);
}
@@ -117,7 +120,15 @@
return searchResult;
}
- private FastSearchResult
createClusteredSearchResult(ClusteringESPFastConfiguration config, IQueryResult
result) throws IllegalType, EmptyValueException {
+ protected int getOffset() {
+ int offset = 0;
+ if (datamodel.getJunkYard().getValue("offset") != null) {
+ offset = Integer.parseInt((String)
datamodel.getJunkYard().getValue("offset"));
+ }
+ return offset;
+ }
+
+ private FastSearchResult
createClusteredSearchResult(ClusteringESPFastConfiguration config, int offset,
IQueryResult result) throws IllegalType, EmptyValueException {
final String clusterField = config.getClusterField();
final String nestedResultsField = config.getNestedResultsField();
final FastSearchResult searchResult = new FastSearchResult(this);
@@ -131,8 +142,7 @@
SearchResult subResult = null;
LOG.debug("HitCount=" + result.getDocCount() + ", clusterField=" +
clusterField + ", nestedResultsField=" + nestedResultsField);
-
- for (int i = 0; i < result.getDocCount(); i++) {
+ for (int i = offset; i < result.getDocCount(); i++) {
try {
final IDocumentSummary document = result.getDocument(i + 1);
currentClusterId = document.getSummaryField(clusterField);
@@ -172,7 +182,10 @@
break;
}
}
- searchResult.setHitCount(collectedHits);
+ if (offset + collectedHits < result.getDocCount()) {
+ searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET,
Integer.toString(offset + collectedHits));
+ }
+ searchResult.setHitCount(result.getDocCount());
return searchResult;
}
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-04-18 18:59:52 UTC (rev 4831)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsAggregatorSearchCommand.java
2007-04-19 11:24:20 UTC (rev 4832)
@@ -121,11 +121,7 @@
private SearchResult getPageResult(NewsAggregatorSearchConfiguration
config, String xmlFile) {
final NewsAggregatorXmlParser newsAggregatorXmlParser = new
NewsAggregatorXmlParser();
try {
- int offset = 0;
- if (datamodel.getJunkYard().getValue("offset") != null) {
- offset = Integer.parseInt((String)
datamodel.getJunkYard().getValue("offset"));
- }
- SearchResult searchResult =
newsAggregatorXmlParser.parseFullPage(config, offset, getInputStream(config,
xmlFile), this);
+ SearchResult searchResult =
newsAggregatorXmlParser.parseFullPage(config, getOffset(),
getInputStream(config, xmlFile), this);
if (searchResult != null && searchResult.getHitCount() > 0) {
return searchResult;
}
@@ -163,6 +159,9 @@
private static final String ELEMENT_GEONAVIGATION = "geonavigation";
private static final String ATTRIBUTE_NAME = "name";
private static final String ATTRIBUTE_XML = "xml";
+ private static final String ELEMENT_COUNTS = "counts";
+ private static final String ATTRIBUTE_ENTRY_COUNT = "entries";
+ private static final String ATTRIBUTE_CLUSTER_COUNT = "clusters";
private Document getDocument(InputStream inputStream) throws
JDOMException, IOException {
final SAXBuilder saxBuilder = new SAXBuilder();
@@ -206,6 +205,7 @@
final Element root = doc.getRootElement();
handleClusters(config, offset,
root.getChildren(ELEMENT_CLUSTER), searchResult, searchCommand);
+ handleCounts(config, root.getChild(ELEMENT_COUNTS), offset,
searchResult);
handleRelated(config, root.getChild(ELEMENT_RELATED),
searchResult);
handleGeoNav(root.getChild(ELEMENT_GEONAVIGATION),
searchResult);
return searchResult;
@@ -220,6 +220,19 @@
}
}
+ private void handleCounts(NewsAggregatorSearchConfiguration config,
Element countsElement, int offset, FastSearchResult searchResult) {
+ final String entries =
countsElement.getAttributeValue(ATTRIBUTE_ENTRY_COUNT);
+ if (entries != null && entries.length() > 0) {
+ searchResult.setHitCount(Integer.parseInt(entries));
+ }
+ final String clusters =
countsElement.getAttributeValue(ATTRIBUTE_CLUSTER_COUNT);
+ if (clusters != null && clusters.length() > 0) {
+ if (offset + config.getResultsToReturn() <
Integer.parseInt(clusters)) {
+
searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET,
Integer.toString(offset + config.getResultsToReturn()));
+ }
+ }
+ }
+
private void handleGeoNav(Element geonavElement, FastSearchResult
searchResult) {
final List<Element> geoNavElements = geonavElement.getChildren();
for (Element geoNavElement : geoNavElements) {
@@ -248,13 +261,11 @@
}
private void handleClusters(NewsAggregatorSearchConfiguration config,
int offset, List<Element> clusters, SearchResult searchResult, SearchCommand
searchCommand) {
- int hitCount = 0;
int maxOffset = offset + config.getResultsToReturn();
for (int i = offset; i < clusters.size() && i < maxOffset; i++) {
Element cluster = clusters.get(i);
- hitCount += handleCluster(config, cluster, searchCommand,
searchResult);
+ handleCluster(config, cluster, searchCommand, searchResult);
}
- searchResult.setHitCount(hitCount);
}
private void handleFlatCluster(NewsAggregatorSearchConfiguration
config, Element cluster, SearchCommand searchCommand, SearchResult
searchResult) {
@@ -290,7 +301,7 @@
addResult(config, nestedResultItem, nestedSearchResult,
searchCommand);
}
}
- searchResultItem.addNestedSearchResult("entries",
nestedSearchResult);
+ searchResultItem.addNestedSearchResult(ATTRIBUTE_ENTRY_COUNT,
nestedSearchResult);
searchResult.addResult(searchResultItem);
nestedSearchResult.setHitCount(entryList.size());
return entryList.size();
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
2007-04-18 18:59:52 UTC (rev 4831)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
2007-04-19 11:24:20 UTC (rev 4832)
@@ -35,7 +35,7 @@
SearchResult collectedResult;
String commandName = null;
final String type = matcher.group(2);
- if (type.equals("cluster")) {
+ if (type.equals("knippe")) {
commandName = "clusterMyNews";
} else if (type.equals("sak")) {
commandName = "newsCase" + position;
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
2007-04-18 18:59:52 UTC (rev 4831)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/config/ClusteringESPFastConfiguration.java
2007-04-19 11:24:20 UTC (rev 4832)
@@ -7,7 +7,8 @@
private String clusterField;
private String clusterMaxFetch;
private String nestedResultsField;
- private String userSortByParameter;
+ private String userSortParameter;
+ private String userSortField;
public ClusteringESPFastConfiguration(SearchConfiguration asc) {
super(asc);
@@ -18,16 +19,17 @@
clusterField = cefcc.getClusterField();
clusterMaxFetch = cefcc.getClusterMaxFetch();
nestedResultsField = cefcc.getNestedResultsField();
- userSortByParameter = cefcc.getUserSortByParameter();
+ userSortParameter = cefcc.getUserSortParameter();
+ userSortField = cefcc.getUserSortField();
}
}
- public String getUserSortByParameter() {
- return userSortByParameter;
+ public String getUserSortParameter() {
+ return userSortParameter;
}
- public void setUserSortByParameter(String userSortByParameter) {
- this.userSortByParameter = userSortByParameter;
+ public void setUserSortParameter(String userSortParameter) {
+ this.userSortParameter = userSortParameter;
}
public String getNestedResultsField() {
@@ -69,4 +71,8 @@
public void setClusterMaxFetch(String clusterMaxFetch) {
this.clusterMaxFetch = clusterMaxFetch;
}
+
+ public String getUserSortField() {
+ return userSortField;
+ }
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits