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