lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kelv...@apache.org
Subject cvs commit: jakarta-lucene-sandbox/contributions/fulcrum SearchResults.java
Date Sat, 11 May 2002 00:47:25 GMT
kelvint     02/05/10 17:47:25

  Added:       contributions/fulcrum SearchResults.java
  Log:
  An object to encapsulate the results of a search.
  
  Revision  Changes    Path
  1.1                  jakarta-lucene-sandbox/contributions/fulcrum/SearchResults.java
  
  Index: SearchResults.java
  ===================================================================
  import org.apache.log4j.Category;
  import org.apache.lucene.document.Document;
  import org.apache.lucene.search.Hits;
  
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
  
  import search.SearchResultFactory;
  
  /**
   * <p>
   * Encapsulates the results of a search. After a SearchResults has
   * been constructed from a Hits object, the IndexSearcher can be
   * safely closed.
   * </p>
   * <p>
   * SearchResults also provides a way of retrieving Java objects from
   * Documents (via {@link search.SearchResultsFactory}).
   * </p>
   * <p>
   * <b>Note that this implementation uses code from
   * /projects/appex/search.</b>
   * </p>
   */
  public class SearchResults
  {
      private static Category cat = Category.getInstance(SearchResults.class);
      private List hitsDocuments;
      private List objectResults;
      private int totalNumberOfResults;
  
      public SearchResults(Hits hits) throws IOException
      {
          this(hits, 0, hits.length());
      }
  
      public SearchResults(Hits hits, int from, int to) throws IOException
      {
          hitsDocuments = new ArrayList();
          totalNumberOfResults = hits.length();
          if (to > totalNumberOfResults)
          {
              to = totalNumberOfResults;
          }
          for (int i = from; i < to; i++)
          {
              hitsDocuments.add(hits.doc(i));
          }
      }
  
      public int getTotalNumberOfResults()
      {
          return totalNumberOfResults;
      }
  
      /**
       * Obtain the results of the search as objects.
       */
      public List getResultsAsObjects()
      {
          if (objectResults == null)
          {
              objectResults = new ArrayList();
              for (Iterator it = hitsDocuments.iterator(); it.hasNext();)
              {
                  try
                  {
                      Object o = SearchResultFactory.
                              getDocAsObject((Document) it.next());
                      if (!objectResults.contains(o))
                          objectResults.add(o);
                  }
                  catch (Exception e)
                  {
                      cat.error("Error instantiating an object from a document.", e);
                  }
              }
          }
          return objectResults;
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:lucene-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-dev-help@jakarta.apache.org>


Mime
View raw message