You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nutch.apache.org by cu...@apache.org on 2005/04/18 23:57:43 UTC

svn commit: r161804 - incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java

Author: cutting
Date: Mon Apr 18 14:57:41 2005
New Revision: 161804

URL: http://svn.apache.org/viewcvs?view=rev&rev=161804
Log:
Add navigation links for "nextPage" and "showAllHits" to channel.  Add
all Nutch document fields to item.  Fix moreFromSite link.

Modified:
    incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java

Modified: incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java
URL: http://svn.apache.org/viewcvs/incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java?view=diff&r1=161803&r2=161804
==============================================================================
--- incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java (original)
+++ incubator/nutch/trunk/src/java/org/apache/nutch/searcher/OpenSearchServlet.java Mon Apr 18 14:57:41 2005
@@ -22,6 +22,8 @@
 import java.util.logging.Level;
 import java.util.Map;
 import java.util.HashMap;
+import java.util.Set;
+import java.util.HashSet;
 
 import javax.servlet.ServletException;
 import javax.servlet.ServletConfig;
@@ -53,6 +55,12 @@
     NS_MAP.put("nutch", "http://www.nutch.org/opensearchrss/1.0/");
   }
 
+  private static final Set SKIP_DETAILS = new HashSet();
+  static {
+    SKIP_DETAILS.add("url");                   // redundant with RSS link
+    SKIP_DETAILS.add("title");                 // redundant with RSS title
+  }
+
   private NutchBean bean;
 
   public void init(ServletConfig config) throws ServletException {
@@ -73,7 +81,7 @@
     String queryString = request.getParameter("query");
     if (queryString == null)
       queryString = "";
-    String htmlQueryString = Entities.encode(queryString);
+    String urlQuery = URLEncoder.encode(queryString, "UTF-8");
 
     int start = 0;                                // first hit to display
     String startString = request.getParameter("start");
@@ -132,7 +140,7 @@
               + queryString);
       addNode(doc, channel, "link",
               base+"/search.jsp"
-              +"?query="+htmlQueryString
+              +"?query="+urlQuery
               +"&start="+start
               +"&hitsPerPage="+hitsPerPage
               +"&hitsPerSite="+hitsPerSite);
@@ -140,7 +148,26 @@
       addNode(doc, channel, "opensearch", "totalResults", ""+hits.getTotal());
       addNode(doc, channel, "opensearch", "startIndex", ""+start);
       addNode(doc, channel, "opensearch", "itemsPerPage", ""+hitsPerPage);
+
+      addNode(doc, channel, "nutch", "query", queryString);
     
+
+      if ((hits.totalIsExact() && end < hits.getTotal()) // more hits to show
+          || (!hits.totalIsExact() && (hits.getLength() > start+hitsPerPage))){
+        addNode(doc, channel, "nutch", "nextPage", requestUrl
+                +"?query="+urlQuery
+                +"&start="+end
+                +"&hitsPerPage="+hitsPerPage
+                +"&hitsPerSite="+hitsPerSite);
+      }
+
+      if ((!hits.totalIsExact() && (hits.getLength() <= start+hitsPerPage))) {
+        addNode(doc, channel, "nutch", "showAllHits", requestUrl
+                +"?query="+urlQuery
+                +"&hitsPerPage="+hitsPerPage
+                +"&hitsPerSite="+0);
+      }
+
       for (int i = 0; i < length; i++) {
         Hit hit = show[i];
         HitDetails detail = details[i];
@@ -157,16 +184,24 @@
         addNode(doc, item, "description", summaries[i]);
         addNode(doc, item, "link", url);
 
+        addNode(doc, item, "nutch", "site", hit.getSite());
+
         addNode(doc, item, "nutch", "cache", base+"/cached.jsp?"+id);
         addNode(doc, item, "nutch", "explain", base+"/explain.jsp?"+id
-                +"&query="+URLEncoder.encode(queryString, "UTF-8"));
+                +"&query="+urlQuery);
 
         if (hit.moreFromSiteExcluded()) {
-          addNode(doc, item, "nutch", "moreFromSite", base+"/search.jsp"
+          addNode(doc, item, "nutch", "moreFromSite", requestUrl
                   +"?query="
                   +URLEncoder.encode("site:"+hit.getSite()+" "+queryString,
                                      "UTF-8")
                   +"&hitsPerPage="+hitsPerPage+"&hitsPerSite="+0);
+        }
+
+        for (int j = 0; j < detail.getLength(); j++) { // add all from detail
+          String field = detail.getField(j);
+          if (!SKIP_DETAILS.contains(field))
+            addNode(doc, item, "nutch", field, detail.getValue(j));
         }
       }