LuceneQueryResult.java
001 /*
002  *  LuceneQueryResult.java
003  *
004  *  Niraj Aswani, 19/March/07
005  *
006  *  $Id: LuceneQueryResult.html,v 1.0 2007/03/19 16:22:01 niraj Exp $
007  */
008 package gate.creole.annic.lucene;
009 
010 import gate.creole.annic.PatternAnnotation;
011 
012 import java.util.List;
013 
014 /**
015  * This class
016  
017  @author niraj
018  */
019 public class LuceneQueryResult {
020 
021   /** Persistance document ID. */
022   private Object docID;
023   
024   private String annotationSetName;
025 
026   private List<?> firstTermPositions;
027 
028   private List<Integer> patternLength;
029 
030   private int queryType;
031 
032   private List<List<PatternAnnotation>> gateAnnotations;
033 
034   private String query;
035 
036   /**
037    * Constructor
038    
039    @param docID - ID of the document
040    @param firstTermPositions - Position of the first terms
041    @param patternLength
042    @param queryType
043    @param gateAnnotations
044    @param query
045    */
046   public LuceneQueryResult(Object docID, String annotationSetName, List<?> firstTermPositions,
047           List<Integer> patternLength, int queryType, List<List<PatternAnnotation>> gateAnnotations,
048           String query) {
049     this.docID = docID;
050     this.annotationSetName = annotationSetName;
051     this.firstTermPositions = firstTermPositions;
052     this.patternLength = patternLength;
053     this.queryType = queryType;
054     this.gateAnnotations = gateAnnotations;
055     this.query = query;
056   }
057 
058   /**
059    @return the type of query used for this result 1 - Phrase Query 0 -
060    *         Term Query For the termQueries firstTermPositions instead
061    *         of holding positions, has an ArrayList with two values Term
062    *         Text (1st value = anntotation Text) and Term Type (2nd
063    *         Value = Annotation Type)
064    */
065   public int getQueryType() {
066     return queryType;
067   }
068 
069   /** @return persistance document ID. */
070   public Object getDocumentID() {
071     return docID;
072   }
073 
074   /**
075    @return if the query type is 0, firstTermPositions, instead of
076    *         holding positions, contain the string values. element at
077    *         position 0: Term Text (annotation text), element at
078    *         position 1: Term Type (annotation type), position 2:
079    *         annotation text, position 3: annotation type and so on. If
080    *         the query type is anything other than 0, it contains
081    *         Integer values indicating positions of first annotations of
082    *         found patterns in the token stream.
083    */
084   public List<?> getFirstTermPositions() {
085     return firstTermPositions;
086   }
087 
088   /**
089    * Returns an arraylist which for each pattern contains a number of
090    * annotation in it.
091    */
092   public List<Integer> patternLength() {
093     return patternLength;
094   }
095 
096   /**
097    * Gets the GateAnnotations for each pattern.
098    */
099   public List<List<PatternAnnotation>> getGateAnnotations() {
100     return this.gateAnnotations;
101   }
102 
103   /**
104    * Returns the main query.
105    */
106   public String getQuery() {
107     return this.query;
108   }
109 
110   /**
111    * Gets the annotation set Name for this result
112    */
113   public String getAnnotationSetName() {
114     return annotationSetName;
115   }
116 }