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>