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();
}
}