On 11/29/01 8:46 AM, "Hugh Brien" <[EMAIL PROTECTED]> wrote:

Post a link to an archive. You don't need to send all the code to list. A
link to the code would probably be better.

> 
> package org.apache.fulcrum.search;
> 
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2001 The Apache Software Foundation.  All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> *    notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> *    notice, this list of conditions and the following disclaimer in
> *    the documentation and/or other materials provided with the
> *    distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> *    if any, must include the following acknowledgment:
> *       "This product includes software developed by the
> *        Apache Software Foundation (http://www.apache.org/)."
> *    Alternately, this acknowledgment may appear in the software itself,
> *    if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> *    "Apache Turbine" must not be used to endorse or promote products
> *    derived from this software without prior written permission. For
> *    written permission, please contact [EMAIL PROTECTED]
> *
> * 5. Products derived from this software may not be called "Apache",
> *    "Apache Turbine", nor may "Apache" appear in their name, without
> *    prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation.  For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
> import org.apache.lucene.search.Query;
> import org.apache.lucene.search.TermQuery;
> import org.apache.lucene.search.Hits;
> import org.apache.fulcrum.Service;
> import java.util.List;
> 
> /**
> * SearchService interface.
> * @author <a href="mailto:[EMAIL PROTECTED]";>Hugh Brien</a>
> */
> 
> public interface SearchService extends Service
> {
>   public static final String SERVICE_NAME = "SearchService";
> 
>   public static final String INDEX_DEFAULT_LOCATION = ".";
> 
>   /**
>   *  Directory for location of index files produced by Lucene
>   */
>   public static final String INDEX_OUTPUT_DIRECTORY = "index.directory";
> 
>   public static final String SEARCH_PREFIX= "search.engine";
> 
>   /**
>   *  Object that may be added to the index.
>   *  Not implemented yet
>   */
>   static String OBJECT_CLASS_NAMES = "database.objects";
> 
>   /**
>   *  Hits returned from a search.  Query is generated by
>   *  Query Parser.  See the Lucene javadocs for
>   *  the Hits and Query interfaces.
>   */
>   public Hits search(Query query);
> 
>   /**
>    *  Returns an implementation of a Query based on the
>    *  search text and a field
>   */
>   public Query getQuery(String searchText, String fieldName);
> 
>  /**
>   *   Method for indexing data.   This provides a simple way
>   *   to create an index.  Maps are used as containers for
>   *   name-value pairs of that are pushed into the index.
>   *   Either a List of Map objects or List of Document objects
>   *   may be passed into the this method.  The method will
>   *   check for an instance of a Map or Document.
>   */
>   public void indexData(List listofMaps);
> 
>   /**
>    *  Returns the directory of the index
>    *  @return String
>   */
> 
>   public String getIndexLocation();
> 
> 
> }
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 
> package org.apache.fulcrum.search;
> 
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2001 The Apache Software Foundation.  All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> *    notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> *    notice, this list of conditions and the following disclaimer in
> *    the documentation and/or other materials provided with the
> *    distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> *    if any, must include the following acknowledgment:
> *       "This product includes software developed by the
> *        Apache Software Foundation (http://www.apache.org/)."
> *    Alternately, this acknowledgment may appear in the software itself,
> *    if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> *    "Apache Turbine" must not be used to endorse or promote products
> *    derived from this software without prior written permission. For
> *    written permission, please contact [EMAIL PROTECTED]
> *
> * 5. Products derived from this software may not be called "Apache",
> *    "Apache Turbine", nor may "Apache" appear in their name, without
> *    prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation.  For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
> 
> import org.apache.lucene.document.Document;
> import org.apache.lucene.document.Field;
> import org.apache.lucene.document.DateField;
> 
> import java.util.Map;
> import java.util.Iterator;
> import java.util.Date;
> 
> 
>   /**
>    * BaseDocument interface.
>    * @author <a href="mailto:[EMAIL PROTECTED]";>Hugh Brien</a>
>    */
> 
> public class BaseDocument
> {
> 
>   private BaseDocument(){}
> 
>   /**
>    * Creates Lucene Document Object.  The Document object is
>    * the basic unit of searchable data.  It is divided into
>    * fields that are user defined.  See Lucene Javadoc for details.
>    * @return Document
>    */
> 
>   public static Document Document(Map docData) throws Exception
>   {
>       Document doc = new Document();
>       if (docData != null)
>       {
>           Iterator iterator = docData.keySet().iterator();
>           while(iterator.hasNext())
>           {
>               String key = (String)iterator.next();
>               String value = (String)docData.get(key);
>               doc.add(Field.Text(key, value));
>           }
>           doc.add(Field.Text("date",new Date().toString()));
>       }
>       return doc;
>   }
> 
> }
> 
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++
> package org.apache.fulcrum.search;
> 
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2001 The Apache Software Foundation.  All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> *    notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> *    notice, this list of conditions and the following disclaimer in
> *    the documentation and/or other materials provided with the
> *    distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> *    if any, must include the following acknowledgment:
> *       "This product includes software developed by the
> *        Apache Software Foundation (http://www.apache.org/)."
> *    Alternately, this acknowledgment may appear in the software itself,
> *    if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> *    "Apache Turbine" must not be used to endorse or promote products
> *    derived from this software without prior written permission. For
> *    written permission, please contact [EMAIL PROTECTED]
> *
> * 5. Products derived from this software may not be called "Apache",
> *    "Apache Turbine", nor may "Apache" appear in their name, without
> *    prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation.  For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
> 
> import org.apache.fulcrum.TurbineServices;
> 
> import org.apache.lucene.analysis.Analyzer;
> import org.apache.lucene.analysis.StopAnalyzer;
> import org.apache.lucene.search.Searcher;
> import org.apache.lucene.search.IndexSearcher;
> import org.apache.lucene.search.Query;
> import org.apache.lucene.search.BooleanQuery;
> import org.apache.lucene.search.TermQuery;
> import org.apache.lucene.index.Term;
> import org.apache.lucene.search.Hits;
> import org.apache.lucene.queryParser.QueryParser;
> import org.apache.lucene.index.IndexWriter;
> 
> import java.util.Date;
> import java.util.Vector;
> import java.util.Map;
> import java.util.Hashtable;
> import java.util.List;
> import java.util.Iterator;
> import java.util.Set;
> import java.io.Writer;
> import java.io.PrintWriter;
> import java.io.StringWriter;
> 
> 
> public class TestSearch
> {
> 
> 
>   public TestSearch()
>   {
>   }
> 
>   public void testIndexStuff()
>   {
>       TurbineSearchService search = new TurbineSearchService();
>       search.indexOutputDirectory = "H:/index/test";
>       List mapList = search.createListOfMaps();
>       search.indexData(mapList);
> 
>   }
> 
>   public void testSearch()
>   {
>       TurbineSearchService search = new TurbineSearchService();
>       search.indexOutputDirectory = "H:/index/test";
>       Query query = search.getQuery("keyword", "keywords");
>       Hits hits = search.search(query);
>       System.out.println(hits.length());
> 
>       query = search.getQuery("test", "keywords");
>       hits = search.search(query);
>       System.out.println(hits.length());
> 
>   }
> 
>   public void testPortalSearch()
>   {
>       file://TurbineConfig tc = new
> TurbineConfig("c:\\jakarta-tomcat-3.2.3\\applications\\jakarta-turbine-2\\co
> nf","TurbineResources.properties");
>       file://org.apache.turbine.util.TurbineConfig tc = new
> org.apache.turbine.util.TurbineConfig("j:\\agassi\\novus-portal","WEB-INF\\c
> onf\\TestTurbineResources.properties");
>       file://tc.init();
> 
>       SearchService search =
> (SearchService)TurbineServices.getInstance().getService(SearchService.SERVIC
> E_NAME);
>       Query query = search.getQuery("Symmetrix", "keywords");
>       Hits hits = search.search(query);
>       if (hits != null)
>       {
>           System.out.println("found ");
>           System.out.println(hits.length());
>       }
>   }
> 
>   /**
>    *
>    */
> 
>   static public void main(String[] args)
>   {
>       TestSearch test =  new TestSearch();
>       file://test.testIndexStuff();
>       test.testSearch();
>   }
> }
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++
> package org.apache.fulcrum.search;
> 
> /* ====================================================================
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 2001 The Apache Software Foundation.  All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> *    notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> *    notice, this list of conditions and the following disclaimer in
> *    the documentation and/or other materials provided with the
> *    distribution.
> *
> * 3. The end-user documentation included with the redistribution,
> *    if any, must include the following acknowledgment:
> *       "This product includes software developed by the
> *        Apache Software Foundation (http://www.apache.org/)."
> *    Alternately, this acknowledgment may appear in the software itself,
> *    if and wherever such third-party acknowledgments normally appear.
> *
> * 4. The names "Apache" and "Apache Software Foundation" and
> *    "Apache Turbine" must not be used to endorse or promote products
> *    derived from this software without prior written permission. For
> *    written permission, please contact [EMAIL PROTECTED]
> *
> * 5. Products derived from this software may not be called "Apache",
> *    "Apache Turbine", nor may "Apache" appear in their name, without
> *    prior written permission of the Apache Software Foundation.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation.  For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> */
> 
> import org.apache.lucene.search.Query;
> import org.apache.lucene.search.TermQuery;
> import org.apache.lucene.queryParser.QueryParser;
> import org.apache.lucene.search.Hits;
> import org.apache.lucene.search.Searcher;
> import org.apache.lucene.search.IndexSearcher;
> import org.apache.lucene.index.IndexReader;
> import org.apache.lucene.index.IndexWriter;
> import org.apache.lucene.document.Document;
> import org.apache.lucene.analysis.StopAnalyzer;
> import org.apache.lucene.analysis.Analyzer;
> 
> import org.apache.fulcrum.BaseService;
> import java.util.List;
> import java.util.*;
> import java.io.*;
> 
> 
> /**
> * Title: NovusSearchService
> * Description: SearchService Implementation
> * Copyright:    Copyright (c) 2001
> * Company:      Novus Consulting Group
> * @author Hugh P. Brien
> * @version 1.0
> */
> 
> public class TurbineSearchService extends BaseService implements
> SearchService
> {
> 
>   String indexOutputDirectory;
> 
>   public TurbineSearchService() {}
> 
>   public Query getQuery(String searchText, String fieldName)
>   {
>       Analyzer analyzer = new StopAnalyzer();
>       Query baseQuery = null;
>       try
>       {
>           baseQuery = QueryParser.parse(searchText, fieldName, analyzer);
>       }
>       catch (Exception ex)
>       {
>           file://Log.error("Error parsing Search Text in Search Service.
> Search Text is " + searchText + " for field " + fieldName);
>       }
>       return baseQuery;
>   }
> 
>   public Hits search(Query query)
>   {
>       Searcher searcher = null;
>       Hits searchHits = null;
>       try
>       {
>           searcher = new IndexSearcher(indexOutputDirectory);
>           searchHits = searcher.search(query);
>       }
>       catch (java.io.IOException ioe)
>       {
>           file://Log.error("Problem with find file system indexes.  File
> not found, File not readable");
>           ioe.printStackTrace();
>       }
>       return searchHits;
>   }
> 
>   public void indexData(List listofMaps)
>   {
>       try
>       {
>           IndexWriter writer = new IndexWriter(this.indexOutputDirectory,
> new StopAnalyzer(), true);
>           Iterator iterator = listofMaps.iterator();
>           while(iterator.hasNext())
>           {
>               Map docMap = (Map)iterator.next();
>               Document document = BaseDocument.Document(docMap);
>               writer.addDocument(document);
>           }
>           writer.close();
>       }
>       catch (java.io.IOException ioe)
>       {
>           file://Log.error("IO Exception when attempting to run indexing
> service against the following directory" + this.indexOutputDirectory);
>       }
>       catch (Exception ex)
>       {
>           ex.printStackTrace();
>       }
>   }
> 
>   /**
>    *  Create a List of Maps for test purposes
>    */
>   public List createListOfMaps()
>   {
>       List mapList = new Vector();
>       Hashtable defaultMap = new Hashtable();
>       defaultMap.put("id", "");
>       defaultMap.put("name", "");
>       defaultMap.put("keywords", "");
>       defaultMap.put("content", "");
> 
>       for (int i = 0; i < 1000; i++)
>       {
>           int modValue = i % 5;
>           Map newMap = (Map)defaultMap.clone();
>           newMap.put("id", "id fields" + String.valueOf(i));
>           newMap.put("name", "name fields" + String.valueOf(i));
>           newMap.put("keywords", "keyword" + String.valueOf(i) + "test" +
> String.valueOf(modValue));
>           newMap.put("content", "content field" + String.valueOf(i));
>           mapList.add(newMap);
>       }
> 
>       return mapList;
>   }
> 
> 
>   /**
>    *
>    */
>    public String getIndexLocation()
>    {
>       return this.indexOutputDirectory;
>    }
> 
> 
>   /**
>   * Initializes the service.
>   *
>   * @throws InitializationException if initialization fails.
>   */
>   public void init()
>   {
>       file://Log.info("SearchService: Init Method Started");
>       System.out.println("SearchService: Init Method Started");
>       file://this.indexOutputDirectory =
> getProperties().getProperty(SearchService.INDEX_OUTPUT_DIRECTORY);
>       this.indexOutputDirectory = ".";
> 
> 
>       file://Log.info(this.indexOutputDirectory);
>       setInit(true);
>       file://Log.info("SearchService: Init Method Ended");
>       System.out.println("SearchService: Init Method Ended");
>   }
> 
> }
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

-- 

jvz.

Jason van Zyl

http://tambora.zenplex.org
http://jakarta.apache.org/turbine
http://jakarta.apache.org/velocity
http://jakarta.apache.org/alexandria
http://jakarta.apache.org/commons



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to