FileDocCategorySizeDatePackage
SearchImpl.javaAPI DocExample2838Sat Feb 28 14:35:44 GMT 2004com.develop.ss.axis

SearchImpl.java

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