Author: ssmalamb
Date: 2007-06-27 19:24:36 +0200 (Wed, 27 Jun 2007)
New Revision: 5456
Modified:
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
Log:
Added video source navigator on video search
Modified:
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
===================================================================
---
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
2007-06-27 15:41:53 UTC (rev 5455)
+++
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
2007-06-27 17:24:36 UTC (rev 5456)
@@ -13,7 +13,11 @@
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
+import java.util.Comparator;
import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.TreeSet;
import no.schibstedsok.searchportal.mode.config.VideoCommandConfig;
import no.schibstedsok.searchportal.result.BasicResultItem;
@@ -70,50 +74,68 @@
LOG.error(e);
}
final String sortByString = this.getParameters().get("userSortBy") !=
null ? (String) this.getParameters().get("userSortBy") : "datetime";
+ final String videoSource = this.getParameters().get("videosource") !=
null ? (String) this.getParameters().get("videosource") : "";
String biasDate = "0";
if (sortByString.equals("standard")) {
biasDate = "100";
}
- //
http://usp1.blinkx.com/partnerapi/sesam/?text=george+bush&channelhits=true
- return
"/partnerapi/sesam/?searchtype="+searchType+"Anylanguage=true&Adultfilter=true&printfields=media_duration&BiasDate="+biasDate+"&Start="+getCurrentOffset(1)+"&text="+query;
+ //
http://usp1.blinkx.com/partnerapi/sesam/?searchtype=full&Anylanguage=true&Adultfilter=true&printfields=media_duration&BiasDate=100&text=pixies
+ return
"/partnerapi/sesam/?searchtype="+searchType+"&Anylanguage=true&Adultfilter=true&channelhits=true&printfields=media_duration"+(videoSource.length()>0?"&databasematch="+videoSource.toLowerCase():"")+"&BiasDate="+biasDate+"&Start="+getCurrentOffset(1)+"&text="+query;
}
public ResultList<? extends ResultItem> execute() {
final BasicResultList<ResultItem> searchResult = new
BasicResultList<ResultItem>();
-
- String transformedQuery = getTransformedQuery();
- searchResult.addField("searchquery", transformedQuery);
+
+ searchResult.addField("searchquery", getTransformedQuery());
searchResult.setHitCount(0);
try {
final Document doc = this.getXmlResult();
final Node rootElement = doc.getDocumentElement();
final Node responseData =
rootElement.getFirstChild().getNextSibling().getNextSibling();
if (responseData.getNodeName().equals("responsedata")) {
- final String hits =
responseData.getFirstChild().getNextSibling().getTextContent();
- searchResult.setHitCount(Integer.parseInt(hits));
-
Node nextSibling = responseData.getFirstChild();
long now = new Date().getTime();
+ TreeMap<String, String> videoSources = new TreeMap<String,
String>();
+ searchResult.addObjectField("videoSources", new TreeSet());
while(nextSibling != null ) {
- if (nextSibling.getNodeName().equals("autn:hit")) {
+ if (nextSibling.getNodeName().equals("autn:channelhits")) {
+ Node channelSibling = nextSibling.getFirstChild();
+ while(channelSibling != null ) {
+
videoSources.put(channelSibling.getAttributes().getNamedItem("name").getTextContent(),channelSibling.getTextContent());
+ channelSibling = channelSibling.getNextSibling();
+ }
+ TreeSet<Map.Entry> set = new TreeSet<Map.Entry>(new
Comparator<Map.Entry>() {
+ public int compare(Map.Entry a, Map.Entry b) { //
Sort descending by hits, ascending by case insensitive channel name if number
of hits is equal
+ int ret = ((Comparable)
Integer.parseInt((String)((Map.Entry)a).getValue())).compareTo(Integer.parseInt((String)((Map.Entry)b).getValue()))*-1;
+ if (ret == 0) {
+ ret = ((Comparable)
((Map.Entry)a).getKey()).toString().toLowerCase().compareTo(((Map.Entry)b).getKey().toString().toLowerCase());
+ }
+ return ret;
+ }
+ });
+ set.addAll(videoSources.entrySet());
+ searchResult.addObjectField("videoSources", set);
+ } else if
(nextSibling.getNodeName().equals("autn:totalhits")) {
+
searchResult.setHitCount(Integer.parseInt(nextSibling.getTextContent()));
+ } else if (nextSibling.getNodeName().equals("autn:hit")) {
final BasicResultItem item = new BasicResultItem();
item.addField("videoDuration", "-");
item.addField("summary", "-");
- Node nextSibling2 = nextSibling.getFirstChild();
- while(nextSibling2 != null ) {
- if
(nextSibling2.getNodeName().equals("autn:reference")) {
- item.addField("url",
nextSibling2.getTextContent());
- } else if
(nextSibling2.getNodeName().equals("autn:title")) {
- item.addField("title",
nextSibling2.getTextContent());
- } else if
(nextSibling2.getNodeName().equals("autn:summary")) {
- String summary = nextSibling2.getTextContent();
+ Node itemSibling = nextSibling.getFirstChild();
+ while(itemSibling != null ) {
+ if
(itemSibling.getNodeName().equals("autn:reference")) {
+ item.addField("url",
itemSibling.getTextContent());
+ } else if
(itemSibling.getNodeName().equals("autn:title")) {
+ item.addField("title",
itemSibling.getTextContent());
+ } else if
(itemSibling.getNodeName().equals("autn:summary")) {
+ String summary = itemSibling.getTextContent();
if (summary.length()>2) {
item.addField("summary",
summary.replaceAll(" Date.*html", "..."));
}
- } else if
(nextSibling2.getNodeName().equals("autn:date")) {
+ } else if
(itemSibling.getNodeName().equals("autn:date")) {
// age function ?
- long videoDate = new
Date(Long.parseLong(nextSibling2.getTextContent())*1000).getTime();
+ long videoDate = new
Date(Long.parseLong(itemSibling.getTextContent())*1000).getTime();
long age = now - videoDate;
if (age > 3600000 * 24 * 4) {
item.addField("date", formatter.format(new
Date(videoDate)) );
@@ -127,26 +149,26 @@
int minutes = (int)(age / (60000 ));
item.addField("date", ""+minutes
+(minutes==1?" minut":" minuter") +" gammal");
}
- } else if
(nextSibling2.getNodeName().equals("autn:content")) {
- Node nextSibling3 =
nextSibling2.getFirstChild().getFirstChild();
- while(nextSibling3 != null ) {
- if
(nextSibling3.getNodeName().equals("CHANNEL")) {
- item.addField("source",
nextSibling3.getTextContent());
- } else if
(nextSibling3.getNodeName().equals("IMAGE")) {
- item.addField("preview",
nextSibling3.getTextContent());
- } else if
(nextSibling3.getNodeName().equals("MEDIA_DURATION")) {
- item.addField("videoDuration",
timeFormatter.format(new Date(Long.parseLong(nextSibling3.getTextContent()) * 1
)));
- } else if
(nextSibling3.getNodeName().equals("MEDIA_TYPE_STRING")) {
- item.addField("videoType",
nextSibling3.getTextContent());
- } else if
(nextSibling3.getNodeName().equals("DOMAIN")) {
- item.addField("videoDomain",
nextSibling3.getTextContent());
- } else if
(nextSibling3.getNodeName().equals("STATICPREVIEW")) {
- item.addField("staticPreview",
nextSibling3.getTextContent());
+ } else if
(itemSibling.getNodeName().equals("autn:content")) {
+ Node itemContentSibling =
itemSibling.getFirstChild().getFirstChild();
+ while(itemContentSibling != null ) {
+ if
(itemContentSibling.getNodeName().equals("CHANNEL")) {
+ item.addField("source",
itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("IMAGE")) {
+ item.addField("preview",
itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("MEDIA_DURATION")) {
+ item.addField("videoDuration",
timeFormatter.format(new
Date(Long.parseLong(itemContentSibling.getTextContent()) * 1 )));
+ } else if
(itemContentSibling.getNodeName().equals("MEDIA_TYPE_STRING")) {
+ item.addField("videoType",
itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("DOMAIN")) {
+ item.addField("videoDomain",
itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("STATICPREVIEW")) {
+ item.addField("staticPreview",
itemContentSibling.getTextContent());
}
- nextSibling3 =
nextSibling3.getNextSibling();
+ itemContentSibling =
itemContentSibling.getNextSibling();
}
}
- nextSibling2 = nextSibling2.getNextSibling();
+ itemSibling = itemSibling.getNextSibling();
}
searchResult.addResult(item);
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits