Author: siren
Date: Sun May 28 06:21:33 2006
New Revision: 409953

URL: http://svn.apache.org/viewvc?rev=409953&view=rev
Log:
enable presearch,search and postsearch hooks

Modified:
    
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/BaseSearch.java
    
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java
    
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContext.java
    
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContextImpl.java
    
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/SearchController.java

Modified: 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/BaseSearch.java
URL: 
http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/BaseSearch.java?rev=409953&r1=409952&r2=409953&view=diff
==============================================================================
--- 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/BaseSearch.java
 (original)
+++ 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/BaseSearch.java
 Sun May 28 06:21:33 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.nutch.webapp.common;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.logging.Logger;
 
@@ -22,7 +24,6 @@
 import org.apache.hadoop.util.LogFormatter;
 import org.apache.nutch.plugin.Extension;
 import org.apache.nutch.plugin.ExtensionPoint;
-import org.apache.nutch.plugin.PluginRuntimeException;
 import org.apache.nutch.webapp.extension.PostSearchExtensionPoint;
 import org.apache.nutch.webapp.extension.PreSearchExtensionPoint;
 import org.apache.nutch.webapp.extension.SearchExtensionPoint;
@@ -37,29 +38,32 @@
 
   protected PostSearchExtensionPoint[] postsearch;
 
-  protected Object[] setup(String xPoint, Configuration conf) {
+  protected Collection setup(String xPoint, Configuration conf) {
+    LOG.info("setting up:" + xPoint);
+
     HashMap filters = new HashMap();
     try {
       ExtensionPoint point = serviceLocator.getPluginRepository()
           .getExtensionPoint(xPoint);
-      if (point == null)
-        throw new RuntimeException(xPoint + " not found.");
-      Extension[] extensions = point.getExtensions();
-      for (int i = 0; i < extensions.length; i++) {
-        Extension extension = extensions[i];
-        Object extensionInstance = extension.getExtensionInstance();
-        if (!filters.containsKey(extensionInstance.getClass().getName())) {
-          filters
-              .put(extensionInstance.getClass().getName(), extensionInstance);
+      if (point != null) {
+        Extension[] extensions = point.getExtensions();
+        for (int i = 0; i < extensions.length; i++) {
+          Extension extension = extensions[i];
+          Object extensionInstance = extension.getExtensionInstance();
+          if (!filters.containsKey(extensionInstance.getClass().getName())) {
+            filters.put(extensionInstance.getClass().getName(),
+                extensionInstance);
+          }
         }
+        return filters.values();
       }
-      return (Object[]) filters.values().toArray(new Object[filters.size()]);
-    } catch (PluginRuntimeException e) {
-      throw new RuntimeException(e);
+    } catch (Exception e) {
+      LOG.info("Error setting up extensions :" + e);
     }
+    return Collections.EMPTY_LIST;
+
   }
 
-  // private HttpServletRequest request;
   private SearchContextImpl context;
 
   private ServiceLocator serviceLocator;
@@ -69,36 +73,42 @@
    */
   public BaseSearch(ServiceLocator locator) {
     this.serviceLocator = locator;
-    presearch = getPreSearchExtensions(serviceLocator.getConfiguration());
-    search = getSearchExtensions(serviceLocator.getConfiguration());
-    postsearch = getPostSearchExtensions(serviceLocator.getConfiguration());
+    Collection pre = getPreSearchExtensions(serviceLocator.getConfiguration());
+    presearch = new PreSearchExtensionPoint[pre.size()];
+    pre.toArray(presearch);
+
+    Collection searchC = 
getSearchExtensions(serviceLocator.getConfiguration());
+    search = new SearchExtensionPoint[searchC.size()];
+    searchC.toArray(search);
+
+    Collection post = 
getPostSearchExtensions(serviceLocator.getConfiguration());
+    postsearch = new PostSearchExtensionPoint[post.size()];
+    post.toArray(postsearch);
   }
 
-  public PreSearchExtensionPoint[] getPreSearchExtensions(Configuration conf) {
+  public Collection getPreSearchExtensions(Configuration conf) {
     if (conf.getObject(PreSearchExtensionPoint.X_POINT_ID) == null) {
-      conf.set(PreSearchExtensionPoint.X_POINT_ID, setup(
+      conf.setObject(PreSearchExtensionPoint.X_POINT_ID, setup(
           PreSearchExtensionPoint.X_POINT_ID, conf));
     }
-    return (PreSearchExtensionPoint[]) conf
-        .getObject(PreSearchExtensionPoint.X_POINT_ID);
+
+    return (Collection) conf.getObject(PreSearchExtensionPoint.X_POINT_ID);
   }
 
-  public SearchExtensionPoint[] getSearchExtensions(Configuration conf) {
+  public Collection getSearchExtensions(Configuration conf) {
     if (conf.getObject(SearchExtensionPoint.X_POINT_ID) == null) {
-      conf.set(SearchExtensionPoint.X_POINT_ID, setup(
+      conf.setObject(SearchExtensionPoint.X_POINT_ID, setup(
           SearchExtensionPoint.X_POINT_ID, conf));
     }
-    return (SearchExtensionPoint[]) conf
-        .getObject(SearchExtensionPoint.X_POINT_ID);
+    return (Collection) conf.getObject(SearchExtensionPoint.X_POINT_ID);
   }
 
-  public PostSearchExtensionPoint[] getPostSearchExtensions(Configuration 
conf) {
+  public Collection getPostSearchExtensions(Configuration conf) {
     if (conf.getObject(PostSearchExtensionPoint.X_POINT_ID) == null) {
-      conf.set(PostSearchExtensionPoint.X_POINT_ID, setup(
+      conf.setObject(PostSearchExtensionPoint.X_POINT_ID, setup(
           PostSearchExtensionPoint.X_POINT_ID, conf));
     }
-    return (PostSearchExtensionPoint[]) conf
-        .getObject(PostSearchExtensionPoint.X_POINT_ID);
+    return (Collection) conf.getObject(PostSearchExtensionPoint.X_POINT_ID);
   }
 
   /**
@@ -132,17 +142,11 @@
    * Entry point to execute the search
    */
   public void doSearch() {
-    // initiate Search Object
-    LOG.fine("create search");
-    Search search = new Search(serviceLocator);
     // create context
-    LOG.fine("create context");
-    context = new SearchContextImpl(search, serviceLocator);
-    LOG.fine("presearch");
+    context = new SearchContextImpl(serviceLocator);
     callPreSearch();
-    LOG.fine("search");
-    callSearch();
-    LOG.fine("post");
+    serviceLocator.getSearch().performSearch();
+    // callSearch();
     callPostSearch();
   }
 }

Modified: 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java
URL: 
http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java?rev=409953&r1=409952&r2=409953&view=diff
==============================================================================
--- 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java
 (original)
+++ 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java
 Sun May 28 06:21:33 2006
@@ -25,7 +25,6 @@
 import org.apache.nutch.searcher.Hit;
 import org.apache.nutch.searcher.HitDetails;
 import org.apache.nutch.searcher.Hits;
-import org.apache.nutch.searcher.NutchBean;
 import org.apache.nutch.searcher.Query;
 import org.apache.nutch.searcher.Summary;
 
@@ -50,8 +49,13 @@
 
   int hitsPerDup;
 
+  // Number of results per page
   int hitsPerPage;
-
+ 
+  // Number of hits required, for example clustering plugin might require more
+  // than hitsPerPage hits
+  int hitsRequired=0;
+ 
   String sortColumn;
 
   boolean sortDesc;
@@ -79,10 +83,12 @@
    * 
    * @param bean
    */
-  public void performSearch(NutchBean bean) {
+  public void performSearch() {
 
+    LOG.info("performing search, requiring:" + getHitsRequired());
+    
     try {
-      hits = bean.search(getQuery(), getStartOffset() + getHitsPerPage(),
+      hits = locator.getNutchBean().search(getQuery(), getStartOffset() + 
getHitsRequired(),
           getHitsPerSite(), getDupField(), getSortColumn(), isSortDesc());
     } catch (IOException e) {
       hits = new Hits(0, new Hit[0]);
@@ -105,8 +111,8 @@
     }
 
     try {
-      details = bean.getDetails(show);
-      summaries = bean.getSummary(details, getQuery());
+      details = locator.getNutchBean().getDetails(show);
+      summaries = locator.getNutchBean().getSummary(details, getQuery());
     } catch (IOException e) {
       LOG.info("Error getting hit information:" + e);
       e.printStackTrace();
@@ -420,5 +426,34 @@
 
   public boolean getIsSearch() {
     return queryString != null && !queryString.trim().equals("");
+  }
+
+  /**
+   * Return number of hits required, if not specified defaults to HitsPerPage
+   * @return
+   */
+  public int getHitsRequired() {
+    LOG.info("gettingHitsRequires:" + hitsRequired);
+    if(hitsRequired!=0) {
+    return hitsRequired;
+    } 
+    return getHitsPerPage();
+  }
+
+  /**
+   * Set number of hits required
+   * @param hitsRequired
+   */
+  public void setHitsRequired(int hitsRequired) {
+    LOG.info("setting required:" + hitsRequired);
+    this.hitsRequired = hitsRequired;
+  }
+
+  /** 
+   * Launch search
+   */
+  public void launchSearch() {
+    BaseSearch bs=new BaseSearch(locator);
+    bs.doSearch();
   }
 }

Modified: 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContext.java
URL: 
http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContext.java?rev=409953&r1=409952&r2=409953&view=diff
==============================================================================
--- 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContext.java
 (original)
+++ 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContext.java
 Sun May 28 06:21:33 2006
@@ -44,6 +44,14 @@
    * @return
    */
   String getParameter(Object key);
+  
+  /**
+   * Put parameter to context
+   * @param key
+   * @param value
+   * @return
+   */
+  void setParameter(Object key, Object value);
 
   /**
    * Return named object

Modified: 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContextImpl.java
URL: 
http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContextImpl.java?rev=409953&r1=409952&r2=409953&view=diff
==============================================================================
--- 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContextImpl.java
 (original)
+++ 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/SearchContextImpl.java
 Sun May 28 06:21:33 2006
@@ -28,8 +28,6 @@
 
   private static final long serialVersionUID = 1L;
 
-  Search search;
-
   ServiceLocator serviceLocator;
 
   /**
@@ -40,9 +38,8 @@
    * @param locator
    *          Used ServiceLocator
    */
-  SearchContextImpl(Search search, ServiceLocator locator) {
+  SearchContextImpl(ServiceLocator locator) {
     super();
-    this.search = search;
     this.serviceLocator = locator;
   }
 
@@ -52,7 +49,7 @@
    * @see org.apache.nutch.webapp.common.SearchContext#getSearch()
    */
   public Search getSearch() {
-    return search;
+    return serviceLocator.getSearch();
   }
 
   /*
@@ -89,5 +86,9 @@
    */
   public Configuration getConfigiration() {
     return serviceLocator.getConfiguration();
+  }
+
+  public void setParameter(Object key, Object value) {
+    this.put(key,value);
   }
 }

Modified: 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/SearchController.java
URL: 
http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/SearchController.java?rev=409953&r1=409952&r2=409953&view=diff
==============================================================================
--- 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/SearchController.java
 (original)
+++ 
lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/SearchController.java
 Sun May 28 06:21:33 2006
@@ -22,7 +22,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.nutch.searcher.NutchBean;
 import org.apache.nutch.webapp.common.Search;
 import org.apache.nutch.webapp.common.ServiceLocator;
 import org.apache.struts.tiles.ComponentContext;
@@ -38,7 +37,6 @@
     ServiceLocator locator=getServiceLocator(request);
     
     Search search=locator.getSearch();
-    NutchBean bean = locator.getNutchBean();
-    search.performSearch(bean);
+    search.launchSearch();
   }
 }




-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
Nutch-cvs mailing list
Nutch-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nutch-cvs

Reply via email to