Author: gttersen
Date: 2007-04-30 21:10:24 +0200 (Mon, 30 Apr 2007)
New Revision: 4929
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/NewsEspSearchCommand.java
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
trunk/query-transform-config-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformerConfig.java
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsMyNewsQueryTransformer.java
trunk/search-command-config-spi/src/main/java/no/schibstedsok/searchportal/mode/config/NewsEspCommandConfig.java
Log:
newsAggregator changes
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-30 15:06:42 UTC (rev 4928)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/SearchModeFactory.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -695,6 +695,7 @@
fillBeanProperty(nesc, inherit, "mediumParameter",
ParseType.String, commandE, "medium");
fillBeanProperty(nesc, inherit, "nestedResultsField",
ParseType.String, commandE, "entries");
fillBeanProperty(nesc, inherit, "collapsingMaxFetch",
ParseType.Int, commandE, "10");
+ fillBeanProperty(nesc, inherit, "ignoreOffset",
ParseType.Boolean, commandE, "false");
}
if (sc instanceof ClusteringEspFastCommandConfig) {
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-30 15:06:42 UTC (rev 4928)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/ClusteringESPFastCommand.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -19,8 +19,6 @@
import java.io.IOException;
public class ClusteringESPFastCommand extends NewsEspSearchCommand {
- public static final String PARAM_NEXT_OFFSET = "nextOffset";
-
private static final Logger LOG =
Logger.getLogger(ClusteringESPFastCommand.class);
public ClusteringESPFastCommand(Context cxt) {
@@ -104,7 +102,8 @@
SearchResult subResult = null;
LOG.debug("HitCount=" + result.getDocCount() + ", clusterField=" +
clusterField + ", nestedResultsField=" + nestedResultsField + ", offset=" +
offset);
- for (int i = offset; i < result.getDocCount(); i++) {
+ final int firstHit = config.isIgnoreOffset() ? 0 : offset;
+ for (int i = firstHit; i < result.getDocCount(); i++) {
try {
final IDocumentSummary document = result.getDocument(i + 1);
currentClusterId = document.getSummaryField(clusterField);
@@ -113,7 +112,6 @@
lastClusterId.isEmpty() ||
currentClusterId.getStringValue().equals("0") ||
(!currentClusterId.getStringValue().equals(lastClusterId.getStringValue()))) {
- collectedClusters++;
LOG.debug("Adding new cluster: " + currentClusterId + ",
count is: " + collectedClusters);
if (collectedClusters < maxClusterCount) {
clusterEntry = addResult(config, searchResult,
document);
@@ -124,6 +122,7 @@
} else {
break;
}
+ collectedClusters++;
subResult = null;
} else {
LOG.debug("Adding subResult for: " +
currentClusterId.getStringValue());
Modified:
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsEspSearchCommand.java
===================================================================
---
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsEspSearchCommand.java
2007-04-30 15:06:42 UTC (rev 4928)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsEspSearchCommand.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -2,6 +2,7 @@
import com.fastsearch.esp.search.query.BaseParameter;
import com.fastsearch.esp.search.query.IQuery;
+import com.fastsearch.esp.search.query.SearchParameter;
import com.fastsearch.esp.search.result.EmptyValueException;
import com.fastsearch.esp.search.result.IDocumentSummary;
import com.fastsearch.esp.search.result.IDocumentSummaryField;
@@ -28,6 +29,7 @@
import java.util.Map;
public class NewsEspSearchCommand extends NavigatableESPFastCommand {
+ public static final String PARAM_NEXT_OFFSET = "nextOffset";
private static final Logger LOG =
Logger.getLogger(NewsEspSearchCommand.class);
public NewsEspSearchCommand(Context cxt) {
@@ -40,6 +42,9 @@
super.modifyQuery(query);
final NewsEspCommandConfig config = getSearchConfiguration();
query.setParameter(BaseParameter.HITS,
Math.max(config.getCollapsingMaxFetch(), config.getResultsToReturn()));
+ if (config.isIgnoreOffset()) {
+ query.setParameter(new SearchParameter(BaseParameter.OFFSET, 0));
+ }
}
@Override
@@ -142,7 +147,8 @@
searchResult.setHitCount(result.getDocCount());
int collectedHits = 0;
int analyzedHits = 0;
- for (int i = offset; i < result.getDocCount() && analyzedHits <
config.getCollapsingMaxFetch(); i++) {
+ final int firstHit = config.isIgnoreOffset() ? 0 : offset;
+ for (int i = firstHit; i < result.getDocCount() && analyzedHits <
config.getCollapsingMaxFetch(); i++) {
try {
final IDocumentSummary document = result.getDocument(i + 1);
final String collapseId =
document.getSummaryField("collapseid").getStringValue();
@@ -172,7 +178,7 @@
}
}
if (offset + collectedHits < result.getDocCount()) {
- searchResult.addField(ClusteringESPFastCommand.PARAM_NEXT_OFFSET,
Integer.toString(offset + collectedHits));
+ searchResult.addField(NewsEspSearchCommand.PARAM_NEXT_OFFSET,
Integer.toString(offset + collectedHits));
}
return searchResult;
}
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-30 15:06:42 UTC (rev 4928)
+++
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/NewsMyNewsSearchCommand.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -24,19 +24,27 @@
}
public SearchResult execute() {
+ NewsMyNewsCommandConfig config = getSearchConfiguration();
String myNews = (String)
context.getDataModel().getJunkYard().getValue("myNews");
LOG.debug("Cookie is: " + myNews);
if (myNews != null && myNews.length() > 0) {
final SearchResult mergedResult = new BasicSearchResult(this);
Matcher matcher = cookiePattern.matcher(myNews);
int position = 0;
- int clusterPos = 0;
- while (matcher.find()) {
+ int offset = getOffset();
+ for (int i = 0; i < offset; i++) {
+ // Forward matcher to correct place in cookie.
+ if (!matcher.find()) {
+ break;
+ }
+ }
+
+ while (matcher.find() && position < config.getResultsToReturn()) {
SearchResult collectedResult;
String commandName = null;
final String type = matcher.group(2);
if (type.equals("knippe")) {
- commandName = "clusterMyNews";
+ commandName = "clusterMyNews" + position;
} else if (type.equals("sak")) {
commandName = "newsCase" + position;
} else if (type.equals("person")) {
@@ -49,20 +57,14 @@
LOG.debug("Waiting for " + commandName);
collectedResult =
context.getRunningQuery().getSearchResult(commandName);
if (collectedResult != null &&
collectedResult.getResults().size() > 0) {
- SearchResultItem searchResultItem;
- if (type.equals("knippe") &&
collectedResult.getResults().size() > clusterPos) {
- searchResultItem =
collectedResult.getResults().get(clusterPos);
- clusterPos++;
- } else {
- searchResultItem =
collectedResult.getResults().get(0);
- final int lastSubPos =
Math.min(collectedResult.getResults().size(), 4);
- if (lastSubPos > 1) {
- final SearchResult subSearchResults = new
BasicSearchResult(this);
-
subSearchResults.setHitCount(collectedResult.getHitCount());
-
searchResultItem.addNestedSearchResult("entries", subSearchResults);
- for (int i = 1; i < lastSubPos; i++) {
-
subSearchResults.addResult(collectedResult.getResults().get(i));
- }
+ SearchResultItem searchResultItem =
collectedResult.getResults().get(0);
+ final int lastSubPos =
Math.min(collectedResult.getResults().size(), 4);
+ if (lastSubPos > 1) {
+ final SearchResult subSearchResults = new
BasicSearchResult(this);
+
subSearchResults.setHitCount(collectedResult.getHitCount());
+
searchResultItem.addNestedSearchResult("entries", subSearchResults);
+ for (int i = 1; i < lastSubPos; i++) {
+
subSearchResults.addResult(collectedResult.getResults().get(i));
}
}
searchResultItem.addField("type", type);
@@ -80,13 +82,37 @@
}
position++;
}
- mergedResult.setHitCount(position);
+
+ while (matcher.find()) {
+ // count all cookies
+ position++;
+ }
+ mergedResult.setHitCount(position + 1 + offset);
+
+ setNextOffset(mergedResult, config.getResultsToReturn());
+
return mergedResult;
} else {
return new BasicSearchResult(this);
}
}
+ private void setNextOffset(SearchResult searchResult, int returnedResults)
{
+ int offset = getOffset();
+ if (offset + returnedResults < searchResult.getHitCount()) {
+ LOG.debug("Setting next offset to: " + (offset + returnedResults));
+ searchResult.addField(NewsEspSearchCommand.PARAM_NEXT_OFFSET,
Integer.toString(offset + returnedResults));
+ }
+ }
+
+ private int getOffset() {
+ int offset = 0;
+ if (datamodel.getJunkYard().getValue("offset") != null) {
+ offset = Integer.parseInt((String)
datamodel.getJunkYard().getValue("offset"));
+ }
+ return offset;
+ }
+
@Override
public NewsMyNewsCommandConfig getSearchConfiguration() {
return (NewsMyNewsCommandConfig) super.getSearchConfiguration();
Modified:
trunk/query-transform-config-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformerConfig.java
===================================================================
---
trunk/query-transform-config-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformerConfig.java
2007-04-30 15:06:42 UTC (rev 4928)
+++
trunk/query-transform-config-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformerConfig.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -25,7 +25,7 @@
private String timestampField;
private String clusterField;
private String clusterIdField = "clusterId";
- private int maxAgeInDays = 7;
+ private int maxAgeInDays = 0;
/**
* @return
@@ -46,6 +46,11 @@
return clusterIdField;
}
+ /**
+ * I max age is set to 0, No max age is defined.
+ *
+ * @return
+ */
public int getMaxAgeInDays() {
return maxAgeInDays;
}
Modified:
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
===================================================================
---
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
2007-04-30 15:06:42 UTC (rev 4928)
+++
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsClusterQueryTransformer.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -84,11 +84,13 @@
filter.append(config.getClusterField()).append(":").append('\"').append(clusterId).append("\"
");
} else {
filter.append(config.getClusterField()).append(":range(1,max) ");
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
- calendar.add(Calendar.DAY_OF_WEEK, -config.getMaxAgeInDays());
- filter.append("and
").append(config.getTimestampField()).append(':');
-
filter.append("range(").append(sdf.format(calendar.getTime())).append(",max)");
+ if (config.getMaxAgeInDays() > 0) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
+ calendar.add(Calendar.DAY_OF_WEEK, -config.getMaxAgeInDays());
+ filter.append("and
").append(config.getTimestampField()).append(':');
+
filter.append("range(").append(sdf.format(calendar.getTime())).append(",max)");
+ }
}
return filter.toString();
}
Modified:
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsMyNewsQueryTransformer.java
===================================================================
---
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsMyNewsQueryTransformer.java
2007-04-30 15:06:42 UTC (rev 4928)
+++
trunk/query-transform-control-spi/src/main/java/no/schibstedsok/searchportal/query/transform/NewsMyNewsQueryTransformer.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -40,6 +40,14 @@
}
}
+ protected int getOffset() {
+ int offset = 0;
+ if (getContext().getDataModel().getJunkYard().getValue("offset") !=
null) {
+ offset = Integer.parseInt((String)
getContext().getDataModel().getJunkYard().getValue("offset"));
+ }
+ return offset;
+ }
+
private String transformQuery(String myNews) {
if (myNews != null && myNews.length() > 0) {
final Matcher matcher = queryPattern.matcher(myNews);
@@ -64,12 +72,15 @@
return newQuery.toString();
} else {
LOG.debug("Position is: " + config.getPosition());
+
int curPos = 0;
- while (matcher.find() && curPos < config.getPosition()) {
+ int offset = getOffset();
+ int pos = config.getPosition() + offset;
+ while (matcher.find() && curPos < pos) {
// Just searching for the correct match.
curPos++;
}
- LOG.debug("Group at pos: " + config.getPosition() + " is " +
matcher.group(0) + ", looking for " + config.getType());
+ LOG.debug("Group at pos: " + pos + " is " + matcher.group(0) +
", looking for " + config.getType());
if (matcher.groupCount() > 0 &&
matcher.group(2).equals(config.getType())) {
if (config.getFilterField() == null) {
return matcher.group(1);
Modified:
trunk/search-command-config-spi/src/main/java/no/schibstedsok/searchportal/mode/config/NewsEspCommandConfig.java
===================================================================
---
trunk/search-command-config-spi/src/main/java/no/schibstedsok/searchportal/mode/config/NewsEspCommandConfig.java
2007-04-30 15:06:42 UTC (rev 4928)
+++
trunk/search-command-config-spi/src/main/java/no/schibstedsok/searchportal/mode/config/NewsEspCommandConfig.java
2007-04-30 19:10:24 UTC (rev 4929)
@@ -10,6 +10,7 @@
private String mediumParameter = "medium";
private String nestedResultsField;
private int collapsingMaxFetch;
+ private boolean ignoreOffset = false;
public NewsEspCommandConfig() {
@@ -79,4 +80,13 @@
public void setMediumParameter(String mediumParameter) {
this.mediumParameter = mediumParameter;
}
+
+ public boolean isIgnoreOffset() {
+ return ignoreOffset;
+ }
+
+ public void setIgnoreOffset(boolean ignoreOffset) {
+ this.ignoreOffset = ignoreOffset;
+ }
+
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits