package com.develop.ss.axis;
import com.develop.ss.search.QueryBean;
import com.develop.ss.search.HitBean;
import com.develop.ss.config.ConfigBean;
import com.develop.ss.IndexLinks;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.ArrayList;
import java.io.IOException;
import org.apache.axis.AxisEngine;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.types.URI;
import org.apache.lucene.queryParser.ParseException;
import javax.servlet.ServletContext;
import javax.servlet.GenericServlet;
import javax.servlet.jsp.JspException;
import javax.xml.soap.SOAPFault;
public class SearchImpl implements SiteSearch {
public ServletContext getServletContext() {
MessageContext mctx = MessageContext.getCurrentContext();
GenericServlet axis = (GenericServlet)mctx.getProperty("transport.http.servlet");
return axis.getServletContext();
}
public ResponseType[] searchContents(QueryType request) throws RemoteException {
try {
ConfigBean config = new ConfigBean();
ServletContext context = getServletContext();
if (context == null) {
throw new Error("null servlet context");
}
//indexPathBean.setContext(context);
QueryBean query = new QueryBean(config.getCurIndexPath(), request.getSeachString());
query.execute();
HitBean[] fullResults = query.getResults();
ArrayList result = new ArrayList();
for (int n=0; n<fullResults.length; n++) {
HitBean hit = fullResults[n];
if (hit.getScore() >= request.getThreshold()) {
ResponseType rt = new ResponseType();
rt.setScore(hit.getScore());
rt.setUrl(new URI(hit.getUrl()));
result.add(rt);
}
}
return (ResponseType[]) result.toArray(new ResponseType[result.size()]);
} catch (Exception e) {
getServletContext().log(e, "fail");
throw new AxisFault(e.getMessage());
}
}
public void doIndex(String indexUrl)
{
try
{
ConfigBean config = new ConfigBean();
String nextIndex;
try
{
nextIndex = config.getNextIndexPath();
}
catch(Exception ex)
{
return;
}
IndexLinks lts = new IndexLinks(nextIndex, config.getMaxLinks(), config.getSkippedLinksFile());
lts.initFollowPrefixesFromSystemProperties();
lts.initAvoidPrefixesFromSystemProperties();
lts.setInitialLink(indexUrl);
config.flipIndexPath();
}
catch(Exception e)
{
//System.out.print(e.getStackTrace());
}
}
}
|