You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by cu...@apache.org on 2003/01/14 20:20:30 UTC

cvs commit: jakarta-lucene/src/java/org/apache/lucene/search BooleanQuery.java PhrasePrefixQuery.java PhraseQuery.java

cutting     2003/01/14 11:20:30

  Modified:    .        CHANGES.txt
               src/java/org/apache/lucene/search BooleanQuery.java
                        PhrasePrefixQuery.java PhraseQuery.java
  Log:
  Fixed a bug with explain().
  
  Revision  Changes    Path
  1.42      +5 -1      jakarta-lucene/CHANGES.txt
  
  Index: CHANGES.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/CHANGES.txt,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- CHANGES.txt	14 Jan 2003 05:03:19 -0000	1.41
  +++ CHANGES.txt	14 Jan 2003 19:20:29 -0000	1.42
  @@ -141,6 +141,10 @@
          fairly advanced programming, and I don't expect anyone to do
          this anytime soon, but at least now it is possible.
   
  +       g. Added public accessors to the primitive query classes
  +       (TermQuery, PhraseQuery and BooleanQuery), permitting access to
  +       their terms and clauses.
  +
        Caution: These are extensive changes and they have not yet been
        tested extensively.  Bug reports are appreciated.
        (cutting)
  
  
  
  1.9       +5 -7      jakarta-lucene/src/java/org/apache/lucene/search/BooleanQuery.java
  
  Index: BooleanQuery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/BooleanQuery.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BooleanQuery.java	14 Jan 2003 00:04:37 -0000	1.8
  +++ BooleanQuery.java	14 Jan 2003 19:20:30 -0000	1.9
  @@ -135,13 +135,6 @@
       }
   
       public Scorer scorer(IndexReader reader) throws IOException {
  -      if (weights.size() == 1) {                  // optimize 1-clause queries
  -        BooleanClause c = (BooleanClause)clauses.elementAt(0);
  -        Weight w = (Weight)weights.elementAt(0);
  -        if (!c.prohibited)			  // just return clause scorer
  -          return w.scorer(reader);
  -      }
  -
         BooleanScorer result = new BooleanScorer(searcher.getSimilarity());
   
         for (int i = 0 ; i < weights.size(); i++) {
  @@ -167,6 +160,11 @@
     }
   
     protected Weight createWeight(Searcher searcher) {
  +    if (clauses.size() == 1) {                    // optimize 1-clause queries
  +      BooleanClause c = (BooleanClause)clauses.elementAt(0);
  +      if (!c.prohibited)			  // just return clause weight
  +        return c.query.createWeight(searcher);
  +    }
       return new BooleanWeight(searcher);
     }
   
  
  
  
  1.5       +8 -14     jakarta-lucene/src/java/org/apache/lucene/search/PhrasePrefixQuery.java
  
  Index: PhrasePrefixQuery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/PhrasePrefixQuery.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PhrasePrefixQuery.java	13 Jan 2003 23:50:33 -0000	1.4
  +++ PhrasePrefixQuery.java	14 Jan 2003 19:20:30 -0000	1.5
  @@ -155,20 +155,6 @@
         if (termArrays.size() == 0)                  // optimize zero-term case
           return null;
       
  -      if (termArrays.size() == 1) {                // optimize one-term case
  -        Term[] terms = (Term[])termArrays.get(0);
  -      
  -        BooleanScorer bos = new BooleanScorer(searcher.getSimilarity());
  -        for (int i=0; i<terms.length; i++) {
  -          TermDocs docs = reader.termDocs(terms[i]);
  -          if (docs != null)
  -            bos.add(new TermScorer(this, docs, searcher.getSimilarity(),
  -                                   reader.norms(field)), false, false);
  -        }
  -      
  -        return bos;
  -      }
  -
         TermPositions[] tps = new TermPositions[termArrays.size()];
         for (int i=0; i<tps.length; i++) {
           Term[] terms = (Term[])termArrays.get(i);
  @@ -218,6 +204,14 @@
     }
   
     protected Weight createWeight(Searcher searcher) {
  +    if (termArrays.size() == 1) {                 // optimize one-term case
  +      Term[] terms = (Term[])termArrays.get(0);
  +      BooleanQuery boq = new BooleanQuery();
  +      for (int i=0; i<terms.length; i++) {
  +        boq.add(new TermQuery(terms[i]), false, false);
  +      }
  +      return boq.createWeight(searcher);
  +    }
       return new PhrasePrefixWeight(searcher);
     }
   
  
  
  
  1.8       +4 -8      jakarta-lucene/src/java/org/apache/lucene/search/PhraseQuery.java
  
  Index: PhraseQuery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/PhraseQuery.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- PhraseQuery.java	13 Jan 2003 23:50:33 -0000	1.7
  +++ PhraseQuery.java	14 Jan 2003 19:20:30 -0000	1.8
  @@ -135,14 +135,6 @@
       public Scorer scorer(IndexReader reader) throws IOException {
         if (terms.size() == 0)			  // optimize zero-term case
           return null;
  -      if (terms.size() == 1) {			  // optimize one-term case
  -        Term term = (Term)terms.elementAt(0);
  -        TermDocs docs = reader.termDocs(term);
  -        if (docs == null)
  -          return null;
  -        return new TermScorer(this, docs, searcher.getSimilarity(),
  -                              reader.norms(term.field()));
  -      }
   
         TermPositions[] tps = new TermPositions[terms.size()];
         for (int i = 0; i < terms.size(); i++) {
  @@ -195,6 +187,10 @@
     }
   
     protected Weight createWeight(Searcher searcher) {
  +    if (terms.size() == 1) {			  // optimize one-term case
  +      Term term = (Term)terms.elementAt(0);
  +      return new TermQuery(term).createWeight(searcher);
  +    }
       return new PhraseWeight(searcher);
     }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>