You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2012/08/13 15:53:27 UTC
svn commit: r1372423 [36/45] - in /lucene/dev/branches/LUCENE-2878: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/libraries/
dev-tools/maven/ dev-tools/maven/lucene/
dev-tools/maven/lucene/analysis/common/
dev-tools/maven/lucene/analysis/icu/ d...
Modified: lucene/dev/branches/LUCENE-2878/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldTermStack.java Mon Aug 13 13:52:46 2012
@@ -95,8 +95,7 @@ public class FieldTermStack {
DocsAndPositionsEnum dpEnum = null;
BytesRef text;
- int numDocs = reader.numDocs() - reader.numDeletedDocs();
- float weight = 0;
+ int numDocs = reader.maxDoc();
while ((text = termsEnum.next()) != null) {
UnicodeUtil.UTF8toUTF16(text, spare);
@@ -104,20 +103,24 @@ public class FieldTermStack {
if (!termSet.contains(term)) {
continue;
}
- dpEnum = termsEnum.docsAndPositions(null, dpEnum, true);
+ dpEnum = termsEnum.docsAndPositions(null, dpEnum);
if (dpEnum == null) {
// null snippet
return;
}
dpEnum.nextDoc();
+
+ // For weight look here: http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/search/DefaultSimilarity.html
+ final float weight = ( float ) ( Math.log( numDocs / ( double ) ( reader.docFreq( fieldName, text ) + 1 ) ) + 1.0 );
final int freq = dpEnum.freq();
for(int i = 0;i < freq;i++) {
int pos = dpEnum.nextPosition();
- // For weight look here: http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/search/DefaultSimilarity.html
- weight = ( float ) ( Math.log( numDocs / ( double ) ( reader.docFreq( fieldName, text ) + 1 ) ) + 1.0 );
+ if (dpEnum.startOffset() < 0) {
+ return; // no offsets, null snippet
+ }
termList.add( new TermInfo( term, dpEnum.startOffset(), dpEnum.endOffset(), pos, weight ) );
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/ivy-settings.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/ivy-settings.xml?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/ivy-settings.xml (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/ivy-settings.xml Mon Aug 13 13:52:46 2012
@@ -19,6 +19,8 @@
<ivysettings>
<settings defaultResolver="default"/>
+ <property name="local-maven2-dir" value="${user.home}/.m2/repository/" />
+
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
@@ -26,11 +28,22 @@
<resolvers>
<ibiblio name="sonatype-releases" root="http://oss.sonatype.org/content/repositories/releases" m2compatible="true" />
+
<!-- you might need to tweak this from china so it works -->
<ibiblio name="working-chinese-mirror" root="http://mirror.netcologne.de/maven2" m2compatible="true" />
+ <!--
+ <filesystem name="local-maven-2" m2compatible="true" local="true">
+ <artifact
+ pattern="${local-maven2-dir}/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
+ <ivy
+ pattern="${local-maven2-dir}/[organisation]/[module]/[revision]/[module]-[revision].pom" />
+ </filesystem>
+ -->
+
<chain name="default" returnFirst="true" checkmodified="true" changingPattern=".*SNAPSHOT">
<resolver ref="local"/>
+ <!-- <resolver ref="local-maven-2" /> -->
<resolver ref="main"/>
<resolver ref="sonatype-releases" />
<resolver ref="working-chinese-mirror" />
Modified: lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java Mon Aug 13 13:52:46 2012
@@ -30,7 +30,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Weight;
-import org.apache.lucene.search.Weight.FeatureFlags;
+import org.apache.lucene.search.Weight.PostingFeatures;
import org.apache.lucene.search.positions.IntervalIterator;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
@@ -101,7 +101,7 @@ class TermsIncludingScoreQuery extends Q
private TermsEnum segmentTermsEnum;
public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
- SVInnerScorer scorer = (SVInnerScorer) scorer(context, true, false, FeatureFlags.DOCS, context.reader().getLiveDocs());
+ SVInnerScorer scorer = (SVInnerScorer) scorer(context, true, false, PostingFeatures.DOCS_AND_FREQS, context.reader().getLiveDocs());
if (scorer != null) {
if (scorer.advance(doc) == doc) {
return scorer.explain();
@@ -122,7 +122,7 @@ class TermsIncludingScoreQuery extends Q
originalWeight.normalize(norm, topLevelBoost * TermsIncludingScoreQuery.this.getBoost());
}
- public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer, FeatureFlags flagsÃ, Bits acceptDocs) throws IOException {
+ public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer, PostingFeatures flagsÃ, Bits acceptDocs) throws IOException {
Terms terms = context.reader().terms(field);
if (terms == null) {
return null;
@@ -186,7 +186,7 @@ class TermsIncludingScoreQuery extends Q
scoreUpto = upto;
TermsEnum.SeekStatus status = termsEnum.seekCeil(terms.get(ords[upto++], spare), true);
if (status == TermsEnum.SeekStatus.FOUND) {
- docsEnum = reuse = termsEnum.docs(acceptDocs, reuse, false);
+ docsEnum = reuse = termsEnum.docs(acceptDocs, reuse, 0);
}
} while (docsEnum == null);
@@ -259,7 +259,7 @@ class TermsIncludingScoreQuery extends Q
scoreUpto = upto;
TermsEnum.SeekStatus status = termsEnum.seekCeil(terms.get(ords[upto++], spare), true);
if (status == TermsEnum.SeekStatus.FOUND) {
- docsEnum = reuse = termsEnum.docs(acceptDocs, reuse, false);
+ docsEnum = reuse = termsEnum.docs(acceptDocs, reuse, 0);
}
} while (docsEnum == null);
Modified: lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java Mon Aug 13 13:52:46 2012
@@ -114,7 +114,7 @@ public class ToChildBlockJoinQuery exten
// child document space
@Override
public Scorer scorer(AtomicReaderContext readerContext, boolean scoreDocsInOrder,
- boolean topScorer, FeatureFlags flags, Bits acceptDocs) throws IOException {
+ boolean topScorer, PostingFeatures flags, Bits acceptDocs) throws IOException {
// Pass scoreDocsInOrder true, topScorer false to our sub:
final Scorer parentScorer = parentWeight.scorer(readerContext, true, false, flags, null);
Modified: lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java Mon Aug 13 13:52:46 2012
@@ -36,7 +36,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Weight;
-import org.apache.lucene.search.Weight.FeatureFlags;
+import org.apache.lucene.search.Weight.PostingFeatures;
import org.apache.lucene.search.grouping.TopGroups;
import org.apache.lucene.search.positions.IntervalIterator;
import org.apache.lucene.util.ArrayUtil;
@@ -160,7 +160,7 @@ public class ToParentBlockJoinQuery exte
// parent document space
@Override
public Scorer scorer(AtomicReaderContext readerContext, boolean scoreDocsInOrder,
- boolean topScorer, FeatureFlags flags, Bits acceptDocs) throws IOException {
+ boolean topScorer, PostingFeatures flags, Bits acceptDocs) throws IOException {
// Pass scoreDocsInOrder true, topScorer false to our sub:
final Scorer childScorer = childWeight.scorer(readerContext, true, false, flags, null);
@@ -197,7 +197,7 @@ public class ToParentBlockJoinQuery exte
@Override
public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
- BlockJoinScorer scorer = (BlockJoinScorer) scorer(context, true, false, FeatureFlags.DOCS, context.reader().getLiveDocs());
+ BlockJoinScorer scorer = (BlockJoinScorer) scorer(context, true, false, PostingFeatures.DOCS_AND_FREQS, context.reader().getLiveDocs());
if (scorer != null) {
if (scorer.advance(doc) == doc) {
return scorer.explain(context.docBase);
Modified: lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java Mon Aug 13 13:52:46 2012
@@ -22,7 +22,7 @@ import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.Weight.FeatureFlags;
+import org.apache.lucene.search.Weight.PostingFeatures;
import org.apache.lucene.search.grouping.GroupDocs;
import org.apache.lucene.search.grouping.TopGroups;
import org.apache.lucene.store.Directory;
@@ -963,7 +963,7 @@ public class TestBlockJoin extends Lucen
ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
Weight weight = s.createNormalizedWeight(q);
- DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, FeatureFlags.DOCS, null);
+ DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, PostingFeatures.DOCS_AND_FREQS, null);
assertEquals(1, disi.advance(1));
r.close();
dir.close();
@@ -997,7 +997,7 @@ public class TestBlockJoin extends Lucen
ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
Weight weight = s.createNormalizedWeight(q);
- DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, FeatureFlags.DOCS, null);
+ DocIdSetIterator disi = weight.scorer(s.getIndexReader().getTopReaderContext().leaves().get(0), true, true, PostingFeatures.DOCS_AND_FREQS, null);
assertEquals(2, disi.advance(0));
r.close();
dir.close();
Modified: lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java Mon Aug 13 13:52:46 2012
@@ -682,7 +682,7 @@ public class TestJoinUtil extends Lucene
}
for (RandomDoc otherSideDoc : otherMatchingDocs) {
- DocsEnum docsEnum = MultiFields.getTermDocsEnum(topLevelReader, MultiFields.getLiveDocs(topLevelReader), "id", new BytesRef(otherSideDoc.id), false);
+ DocsEnum docsEnum = MultiFields.getTermDocsEnum(topLevelReader, MultiFields.getLiveDocs(topLevelReader), "id", new BytesRef(otherSideDoc.id), 0);
assert docsEnum != null;
int doc = docsEnum.nextDoc();
expectedResult.set(doc);
Modified: lucene/dev/branches/LUCENE-2878/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Mon Aug 13 13:52:46 2012
@@ -25,6 +25,7 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.NoSuchElementException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
@@ -42,7 +43,6 @@ import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.FieldInfos;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.Fields;
-import org.apache.lucene.index.FieldsEnum;
import org.apache.lucene.index.OrdTermState;
import org.apache.lucene.index.StoredFieldVisitor;
import org.apache.lucene.index.TermState;
@@ -718,22 +718,27 @@ public class MemoryIndex {
private class MemoryFields extends Fields {
@Override
- public FieldsEnum iterator() {
- return new FieldsEnum() {
+ public Iterator<String> iterator() {
+ return new Iterator<String>() {
int upto = -1;
@Override
public String next() {
upto++;
if (upto >= sortedFields.length) {
- return null;
+ throw new NoSuchElementException();
}
return sortedFields[upto].getKey();
}
@Override
- public Terms terms() {
- return MemoryFields.this.terms(sortedFields[upto].getKey());
+ public boolean hasNext() {
+ return upto+1 < sortedFields.length;
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
}
};
}
@@ -778,8 +783,21 @@ public class MemoryIndex {
public int getDocCount() {
return info.sortedTerms.length > 0 ? 1 : 0;
}
-
-
+
+ @Override
+ public boolean hasOffsets() {
+ return stride == 3;
+ }
+
+ @Override
+ public boolean hasPositions() {
+ return true;
+ }
+
+ @Override
+ public boolean hasPayloads() {
+ return false;
+ }
};
}
}
@@ -872,7 +890,7 @@ public class MemoryIndex {
}
@Override
- public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) {
+ public DocsEnum docs(Bits liveDocs, DocsEnum reuse, int flags) {
if (reuse == null || !(reuse instanceof MemoryDocsEnum)) {
reuse = new MemoryDocsEnum();
}
@@ -880,10 +898,7 @@ public class MemoryIndex {
}
@Override
- public DocsAndPositionsEnum docsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, boolean needsOffsets) {
- if (needsOffsets) {
- return null;
- }
+ public DocsAndPositionsEnum docsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, int flags) {
if (reuse == null || !(reuse instanceof MemoryDocsAndPositionsEnum)) {
reuse = new MemoryDocsAndPositionsEnum();
}
@@ -1006,11 +1021,6 @@ public class MemoryIndex {
}
@Override
- public boolean hasPayload() {
- return false;
- }
-
- @Override
public BytesRef getPayload() {
return null;
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/memory/src/test/org/apache/lucene/index/memory/MemoryIndexTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/memory/src/test/org/apache/lucene/index/memory/MemoryIndexTest.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/memory/src/test/org/apache/lucene/index/memory/MemoryIndexTest.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/memory/src/test/org/apache/lucene/index/memory/MemoryIndexTest.java Mon Aug 13 13:52:46 2012
@@ -205,7 +205,7 @@ public class MemoryIndexTest extends Bas
MemoryIndex memory = new MemoryIndex();
memory.addField("foo", "bar", analyzer);
AtomicReader reader = (AtomicReader) memory.createSearcher().getIndexReader();
- DocsEnum disi = _TestUtil.docs(random(), reader, "foo", new BytesRef("bar"), null, null, false);
+ DocsEnum disi = _TestUtil.docs(random(), reader, "foo", new BytesRef("bar"), null, null, 0);
int docid = disi.docID();
assertTrue(docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS);
assertTrue(disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
@@ -213,7 +213,7 @@ public class MemoryIndexTest extends Bas
// now reuse and check again
TermsEnum te = reader.terms("foo").iterator(null);
assertTrue(te.seekExact(new BytesRef("bar"), true));
- disi = te.docs(null, disi, false);
+ disi = te.docs(null, disi, 0);
docid = disi.docID();
assertTrue(docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS);
assertTrue(disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
@@ -225,7 +225,7 @@ public class MemoryIndexTest extends Bas
MemoryIndex memory = new MemoryIndex(true);
memory.addField("foo", "bar", analyzer);
AtomicReader reader = (AtomicReader) memory.createSearcher().getIndexReader();
- DocsAndPositionsEnum disi = reader.termPositionsEnum(null, "foo", new BytesRef("bar"), false);
+ DocsAndPositionsEnum disi = reader.termPositionsEnum(null, "foo", new BytesRef("bar"));
int docid = disi.docID();
assertTrue(docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS);
assertTrue(disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
@@ -236,7 +236,7 @@ public class MemoryIndexTest extends Bas
// now reuse and check again
TermsEnum te = reader.terms("foo").iterator(null);
assertTrue(te.seekExact(new BytesRef("bar"), true));
- disi = te.docsAndPositions(null, disi, false);
+ disi = te.docsAndPositions(null, disi);
docid = disi.docID();
assertTrue(docid == -1 || docid == DocIdSetIterator.NO_MORE_DOCS);
assertTrue(disi.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
Modified: lucene/dev/branches/LUCENE-2878/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java Mon Aug 13 13:52:46 2012
@@ -25,7 +25,6 @@ import org.apache.lucene.index.MultiFiel
import org.apache.lucene.index.Fields;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.index.FieldsEnum;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.search.DocIdSetIterator;
@@ -133,16 +132,10 @@ public class HighFreqTerms {
throw new RuntimeException("no fields found for this index");
}
tiq = new TermStatsQueue(numTerms);
- FieldsEnum fieldsEnum = fields.iterator();
- while (true) {
- field = fieldsEnum.next();
- if (field != null) {
- Terms terms = fieldsEnum.terms();
- if (terms != null) {
- tiq.fill(field, terms.iterator(null));
- }
- } else {
- break;
+ for (String fieldName : fields) {
+ Terms terms = fields.terms(fieldName);
+ if (terms != null) {
+ tiq.fill(fieldName, terms.iterator(null));
}
}
}
@@ -200,7 +193,8 @@ public class HighFreqTerms {
continue;
} // otherwise we fall-through
}
- DocsEnum de = r.termDocsEnum(liveDocs, field, termText, true);
+ // note: what should we do if field omits freqs? currently it counts as 1...
+ DocsEnum de = r.termDocsEnum(liveDocs, field, termText);
if (de != null) {
while (de.nextDoc() != DocIdSetIterator.NO_MORE_DOCS)
totalTF += de.freq();
Modified: lucene/dev/branches/LUCENE-2878/lucene/misc/src/test/org/apache/lucene/misc/TestHighFreqTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/misc/src/test/org/apache/lucene/misc/TestHighFreqTerms.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/misc/src/test/org/apache/lucene/misc/TestHighFreqTerms.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/misc/src/test/org/apache/lucene/misc/TestHighFreqTerms.java Mon Aug 13 13:52:46 2012
@@ -56,6 +56,7 @@ public class TestHighFreqTerms extends L
dir.close();
dir = null;
reader = null;
+ writer = null;
}
/******************** Tests for getHighFreqTerms **********************************/
Modified: lucene/dev/branches/LUCENE-2878/lucene/module-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/module-build.xml?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/module-build.xml (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/module-build.xml Mon Aug 13 13:52:46 2012
@@ -49,8 +49,8 @@
<path id="test.classpath" refid="test.base.classpath"/>
<path id="junit.classpath">
- <path refid="test.classpath"/>
<pathelement location="${build.dir}/classes/test"/>
+ <path refid="test.classpath"/>
<pathelement path="${java.class.path}"/>
</path>
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java Mon Aug 13 13:52:46 2012
@@ -229,7 +229,7 @@ public class CustomScoreQuery extends Qu
@Override
public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
- boolean topScorer, FeatureFlags flags, Bits acceptDocs) throws IOException {
+ boolean topScorer, PostingFeatures flags, Bits acceptDocs) throws IOException {
// Pass true for "scoresDocsInOrder", because we
// require in-order scoring, even if caller does not,
// since we call advance on the valSrcScorers. Pass
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/TermsFilter.java Mon Aug 13 13:52:46 2012
@@ -82,7 +82,7 @@ public class TermsFilter extends Filter
br.copyBytes(term.bytes());
assert termsEnum != null;
if (termsEnum.seekCeil(br) == TermsEnum.SeekStatus.FOUND) {
- docs = termsEnum.docs(acceptDocs, docs, false);
+ docs = termsEnum.docs(acceptDocs, docs, 0);
while (docs.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
result.set(docs.docID());
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java Mon Aug 13 13:52:46 2012
@@ -99,7 +99,7 @@ public class BoostedQuery extends Query
@Override
public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
- boolean topScorer, FeatureFlags flags, Bits acceptDocs) throws IOException {
+ boolean topScorer, PostingFeatures flags, Bits acceptDocs) throws IOException {
// we are gonna advance() the subscorer
Scorer subQueryScorer = qWeight.scorer(context, true, false, flags, acceptDocs);
if(subQueryScorer == null) {
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java Mon Aug 13 13:52:46 2012
@@ -92,13 +92,13 @@ public class FunctionQuery extends Query
@Override
public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
- boolean topScorer, FeatureFlags flags, Bits acceptDocs) throws IOException {
+ boolean topScorer, PostingFeatures flags, Bits acceptDocs) throws IOException {
return new AllScorer(context, acceptDocs, this, queryWeight);
}
@Override
public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
- return ((AllScorer)scorer(context, true, true, FeatureFlags.DOCS, context.reader().getLiveDocs())).explain(doc);
+ return ((AllScorer)scorer(context, true, true, PostingFeatures.DOCS_AND_FREQS, context.reader().getLiveDocs())).explain(doc);
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java Mon Aug 13 13:52:46 2012
@@ -23,7 +23,7 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.docvalues.FloatDocValues;
import org.apache.lucene.search.*;
-import org.apache.lucene.search.Weight.FeatureFlags;
+import org.apache.lucene.search.Weight.PostingFeatures;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.mutable.MutableValue;
import org.apache.lucene.util.mutable.MutableValueFloat;
@@ -124,7 +124,7 @@ class QueryDocValues extends FloatDocVal
try {
if (doc < lastDocRequested) {
if (noMatches) return defVal;
- scorer = weight.scorer(readerContext, true, false, FeatureFlags.DOCS, acceptDocs);
+ scorer = weight.scorer(readerContext, true, false, PostingFeatures.DOCS_AND_FREQS, acceptDocs);
if (scorer==null) {
noMatches = true;
return defVal;
@@ -155,7 +155,7 @@ class QueryDocValues extends FloatDocVal
try {
if (doc < lastDocRequested) {
if (noMatches) return false;
- scorer = weight.scorer(readerContext, true, false, FeatureFlags.DOCS, acceptDocs);
+ scorer = weight.scorer(readerContext, true, false, PostingFeatures.DOCS_AND_FREQS, acceptDocs);
scorerDoc = -1;
if (scorer==null) {
noMatches = true;
@@ -213,7 +213,7 @@ class QueryDocValues extends FloatDocVal
mval.exists = false;
return;
}
- scorer = weight.scorer(readerContext, true, false, FeatureFlags.DOCS, acceptDocs);
+ scorer = weight.scorer(readerContext, true, false, PostingFeatures.DOCS_AND_FREQS, acceptDocs);
scorerDoc = -1;
if (scorer==null) {
noMatches = true;
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TFValueSource.java Mon Aug 13 13:52:46 2012
@@ -57,16 +57,11 @@ public class TFValueSource extends TermF
public void reset() throws IOException {
// no one should call us for deleted docs?
- boolean omitTF = false;
if (terms != null) {
final TermsEnum termsEnum = terms.iterator(null);
if (termsEnum.seekExact(indexedBytes, false)) {
- docs = termsEnum.docs(null, null, true);
- if (docs == null) { // omitTF
- omitTF = true;
- docs = termsEnum.docs(null, null, false);
- }
+ docs = termsEnum.docs(null, null);
} else {
docs = null;
}
@@ -96,30 +91,6 @@ public class TFValueSource extends TermF
return DocIdSetIterator.NO_MORE_DOCS;
}
};
- } else if (omitTF) {
- // the docsenum won't support freq(), so return 1
- final DocsEnum delegate = docs;
- docs = new DocsEnum() {
- @Override
- public int freq() {
- return 1;
- }
-
- @Override
- public int docID() {
- return delegate.docID();
- }
-
- @Override
- public int nextDoc() throws IOException {
- return delegate.nextDoc();
- }
-
- @Override
- public int advance(int target) throws IOException {
- return delegate.advance(target);
- }
- };
}
atDoc = -1;
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/TermFreqValueSource.java Mon Aug 13 13:52:46 2012
@@ -50,16 +50,11 @@ public class TermFreqValueSource extends
public void reset() throws IOException {
// no one should call us for deleted docs?
- boolean omitTF = false;
if (terms != null) {
final TermsEnum termsEnum = terms.iterator(null);
if (termsEnum.seekExact(indexedBytes, false)) {
- docs = termsEnum.docs(null, null, true);
- if (docs == null) { // omit tf
- omitTF = true;
- docs = termsEnum.docs(null, null, false);
- }
+ docs = termsEnum.docs(null, null);
} else {
docs = null;
}
@@ -89,30 +84,6 @@ public class TermFreqValueSource extends
return DocIdSetIterator.NO_MORE_DOCS;
}
};
- } else if (omitTF) {
- // the docsenum won't support freq(), so return 1
- final DocsEnum delegate = docs;
- docs = new DocsEnum() {
- @Override
- public int freq() {
- return 1;
- }
-
- @Override
- public int docID() {
- return delegate.docID();
- }
-
- @Override
- public int nextDoc() throws IOException {
- return delegate.nextDoc();
- }
-
- @Override
- public int advance(int target) throws IOException {
- return delegate.advance(target);
- }
- };
}
atDoc = -1;
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParserBase.java Mon Aug 13 13:52:46 2012
@@ -30,6 +30,7 @@ import org.apache.lucene.analysis.tokena
import org.apache.lucene.document.DateTools;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.QueryParser.Operator;
+import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.Version;
@@ -37,7 +38,7 @@ import org.apache.lucene.util.Version;
/** This class is overridden by QueryParser in QueryParser.jj
* and acts to separate the majority of the Java code from the .jj grammar file.
*/
-public abstract class QueryParserBase {
+public abstract class QueryParserBase implements CommonQueryParserConfiguration {
/** Do not catch this exception in your code, it means you are using methods that you should no longer use. */
public static class MethodRemovedUseAnother extends Throwable {}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/precedence/processors/PrecedenceQueryNodeProcessorPipeline.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/precedence/processors/PrecedenceQueryNodeProcessorPipeline.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/precedence/processors/PrecedenceQueryNodeProcessorPipeline.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/precedence/processors/PrecedenceQueryNodeProcessorPipeline.java Mon Aug 13 13:52:46 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.queryparser.fl
*/
import org.apache.lucene.queryparser.flexible.precedence.PrecedenceQueryParser;
+import org.apache.lucene.queryparser.flexible.standard.processors.BooleanQuery2ModifierNodeProcessor;
import org.apache.lucene.queryparser.flexible.standard.processors.GroupQueryNodeProcessor;
import org.apache.lucene.queryparser.flexible.standard.processors.StandardQueryNodeProcessorPipeline;
import org.apache.lucene.queryparser.flexible.core.config.QueryConfigHandler;
@@ -46,7 +47,7 @@ public class PrecedenceQueryNodeProcesso
for (int i = 0 ; i < size() ; i++) {
- if (get(i).getClass().equals(GroupQueryNodeProcessor.class)) {
+ if (get(i).getClass().equals(BooleanQuery2ModifierNodeProcessor.class)) {
remove(i--);
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.java Mon Aug 13 13:52:46 2012
@@ -110,7 +110,7 @@ import org.apache.lucene.search.Query;
* @see StandardQueryNodeProcessorPipeline
* @see StandardQueryTreeBuilder
*/
-public class StandardQueryParser extends QueryParserHelper {
+public class StandardQueryParser extends QueryParserHelper implements CommonQueryParserConfiguration {
/**
* Constructs a {@link StandardQueryParser} object.
@@ -119,6 +119,7 @@ public class StandardQueryParser extends
super(new StandardQueryConfigHandler(), new StandardSyntaxParser(),
new StandardQueryNodeProcessorPipeline(null),
new StandardQueryTreeBuilder());
+ setEnablePositionIncrements(true);
}
/**
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/GroupQueryNodeProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/GroupQueryNodeProcessor.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/GroupQueryNodeProcessor.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/GroupQueryNodeProcessor.java Mon Aug 13 13:52:46 2012
@@ -49,6 +49,7 @@ import org.apache.lucene.queryparser.fle
* Example: TODO: describe a good example to show how this processor works
*
* @see org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler
+ * @deprecated use {@link BooleanQuery2ModifierNodeProcessor} instead
*/
public class GroupQueryNodeProcessor implements QueryNodeProcessor {
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/MultiFieldQueryNodeProcessor.java Mon Aug 13 13:52:46 2012
@@ -25,6 +25,7 @@ import org.apache.lucene.queryparser.fle
import org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode;
import org.apache.lucene.queryparser.flexible.core.nodes.FieldableNode;
import org.apache.lucene.queryparser.flexible.core.nodes.GroupQueryNode;
+import org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode;
import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode;
import org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessorImpl;
import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
@@ -108,7 +109,7 @@ public class MultiFieldQueryNodeProcesso
}
- return new GroupQueryNode(new BooleanQueryNode(children));
+ return new GroupQueryNode(new OrQueryNode(children));
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/processors/StandardQueryNodeProcessorPipeline.java Mon Aug 13 13:52:46 2012
@@ -63,7 +63,8 @@ public class StandardQueryNodeProcessorP
add(new AllowLeadingWildcardProcessor());
add(new AnalyzerQueryNodeProcessor());
add(new PhraseSlopQueryNodeProcessor());
- add(new GroupQueryNodeProcessor());
+ //add(new GroupQueryNodeProcessor());
+ add(new BooleanQuery2ModifierNodeProcessor());
add(new NoChildOptimizationQueryNodeProcessor());
add(new RemoveDeletedQueryNodesProcessor());
add(new RemoveEmptyNonLeafQueryNodeProcessor());
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestQueryParser.java Mon Aug 13 13:52:46 2012
@@ -20,19 +20,269 @@ package org.apache.lucene.queryparser.cl
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.analysis.MockTokenizer;
+import org.apache.lucene.document.DateTools.Resolution;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.classic.QueryParser.Operator;
+import org.apache.lucene.queryparser.flexible.standard.CommonQueryParserConfiguration;
import org.apache.lucene.queryparser.util.QueryParserTestBase;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
/**
* Tests QueryParser.
*/
public class TestQueryParser extends QueryParserTestBase {
- @Override
+ public static class QPTestParser extends QueryParser {
+ public QPTestParser(String f, Analyzer a) {
+ super(TEST_VERSION_CURRENT, f, a);
+ }
+
+ @Override
+ protected Query getFuzzyQuery(String field, String termStr,
+ float minSimilarity) throws ParseException {
+ throw new ParseException("Fuzzy queries not allowed");
+ }
+
+ @Override
+ protected Query getWildcardQuery(String field, String termStr)
+ throws ParseException {
+ throw new ParseException("Wildcard queries not allowed");
+ }
+ }
+
public QueryParser getParser(Analyzer a) throws Exception {
- if (a == null)
- a = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true);
- QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field", a);
+ if (a == null) a = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true);
+ QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, getDefaultField(), a);
qp.setDefaultOperator(QueryParserBase.OR_OPERATOR);
return qp;
}
+
+ @Override
+ public CommonQueryParserConfiguration getParserConfig(Analyzer a)
+ throws Exception {
+ return getParser(a);
+ }
+
+ @Override
+ public Query getQuery(String query, CommonQueryParserConfiguration cqpC)
+ throws Exception {
+ assert cqpC != null : "Parameter must not be null";
+ assert (cqpC instanceof QueryParser) : "Parameter must be instance of QueryParser";
+ QueryParser qp = (QueryParser) cqpC;
+ return qp.parse(query);
+ }
+
+ @Override
+ public Query getQuery(String query, Analyzer a) throws Exception {
+ return getParser(a).parse(query);
+ }
+
+ @Override
+ public boolean isQueryParserException(Exception exception) {
+ return exception instanceof ParseException;
+ }
+
+ @Override
+ public void setDefaultOperatorOR(CommonQueryParserConfiguration cqpC) {
+ assert (cqpC instanceof QueryParser);
+ QueryParser qp = (QueryParser) cqpC;
+ qp.setDefaultOperator(Operator.OR);
+ }
+
+ @Override
+ public void setDefaultOperatorAND(CommonQueryParserConfiguration cqpC) {
+ assert (cqpC instanceof QueryParser);
+ QueryParser qp = (QueryParser) cqpC;
+ qp.setDefaultOperator(Operator.AND);
+ }
+
+ @Override
+ public void setAnalyzeRangeTerms(CommonQueryParserConfiguration cqpC,
+ boolean value) {
+ assert (cqpC instanceof QueryParser);
+ QueryParser qp = (QueryParser) cqpC;
+ qp.setAnalyzeRangeTerms(value);
+ }
+
+ @Override
+ public void setAutoGeneratePhraseQueries(CommonQueryParserConfiguration cqpC,
+ boolean value) {
+ assert (cqpC instanceof QueryParser);
+ QueryParser qp = (QueryParser) cqpC;
+ qp.setAutoGeneratePhraseQueries(value);
+ }
+
+ @Override
+ public void setDateResolution(CommonQueryParserConfiguration cqpC,
+ CharSequence field, Resolution value) {
+ assert (cqpC instanceof QueryParser);
+ QueryParser qp = (QueryParser) cqpC;
+ qp.setDateResolution(field.toString(), value);
+ }
+
+ @Override
+ public void testDefaultOperator() throws Exception {
+ QueryParser qp = getParser(new MockAnalyzer(random()));
+ // make sure OR is the default:
+ assertEquals(QueryParserBase.OR_OPERATOR, qp.getDefaultOperator());
+ setDefaultOperatorAND(qp);
+ assertEquals(QueryParserBase.AND_OPERATOR, qp.getDefaultOperator());
+ setDefaultOperatorOR(qp);
+ assertEquals(QueryParserBase.OR_OPERATOR, qp.getDefaultOperator());
+ }
+
+ // LUCENE-2002: when we run javacc to regen QueryParser,
+ // we also run a replaceregexp step to fix 2 of the public
+ // ctors (change them to protected):
+ //
+ // protected QueryParser(CharStream stream)
+ //
+ // protected QueryParser(QueryParserTokenManager tm)
+ //
+ // This test is here as a safety, in case that ant step
+ // doesn't work for some reason.
+ public void testProtectedCtors() throws Exception {
+ try {
+ QueryParser.class.getConstructor(new Class[] {CharStream.class});
+ fail("please switch public QueryParser(CharStream) to be protected");
+ } catch (NoSuchMethodException nsme) {
+ // expected
+ }
+ try {
+ QueryParser.class
+ .getConstructor(new Class[] {QueryParserTokenManager.class});
+ fail("please switch public QueryParser(QueryParserTokenManager) to be protected");
+ } catch (NoSuchMethodException nsme) {
+ // expected
+ }
+ }
+
+ @Override
+ public void testStarParsing() throws Exception {
+ final int[] type = new int[1];
+ QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "field",
+ new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false)) {
+ @Override
+ protected Query getWildcardQuery(String field, String termStr) {
+ // override error checking of superclass
+ type[0] = 1;
+ return new TermQuery(new Term(field, termStr));
+ }
+
+ @Override
+ protected Query getPrefixQuery(String field, String termStr) {
+ // override error checking of superclass
+ type[0] = 2;
+ return new TermQuery(new Term(field, termStr));
+ }
+
+ @Override
+ protected Query getFieldQuery(String field, String queryText,
+ boolean quoted) throws ParseException {
+ type[0] = 3;
+ return super.getFieldQuery(field, queryText, quoted);
+ }
+ };
+
+ TermQuery tq;
+
+ tq = (TermQuery) qp.parse("foo:zoo*");
+ assertEquals("zoo", tq.getTerm().text());
+ assertEquals(2, type[0]);
+
+ tq = (TermQuery) qp.parse("foo:zoo*^2");
+ assertEquals("zoo", tq.getTerm().text());
+ assertEquals(2, type[0]);
+ assertEquals(tq.getBoost(), 2, 0);
+
+ tq = (TermQuery) qp.parse("foo:*");
+ assertEquals("*", tq.getTerm().text());
+ assertEquals(1, type[0]); // could be a valid prefix query in the future too
+
+ tq = (TermQuery) qp.parse("foo:*^2");
+ assertEquals("*", tq.getTerm().text());
+ assertEquals(1, type[0]);
+ assertEquals(tq.getBoost(), 2, 0);
+
+ tq = (TermQuery) qp.parse("*:foo");
+ assertEquals("*", tq.getTerm().field());
+ assertEquals("foo", tq.getTerm().text());
+ assertEquals(3, type[0]);
+
+ tq = (TermQuery) qp.parse("*:*");
+ assertEquals("*", tq.getTerm().field());
+ assertEquals("*", tq.getTerm().text());
+ assertEquals(1, type[0]); // could be handled as a prefix query in the
+ // future
+
+ tq = (TermQuery) qp.parse("(*:*)");
+ assertEquals("*", tq.getTerm().field());
+ assertEquals("*", tq.getTerm().text());
+ assertEquals(1, type[0]);
+
+ }
+
+ public void testCustomQueryParserWildcard() {
+ try {
+ new QPTestParser("contents", new MockAnalyzer(random(),
+ MockTokenizer.WHITESPACE, false)).parse("a?t");
+ fail("Wildcard queries should not be allowed");
+ } catch (ParseException expected) {
+ // expected exception
+ }
+ }
+
+ public void testCustomQueryParserFuzzy() throws Exception {
+ try {
+ new QPTestParser("contents", new MockAnalyzer(random(),
+ MockTokenizer.WHITESPACE, false)).parse("xunit~");
+ fail("Fuzzy queries should not be allowed");
+ } catch (ParseException expected) {
+ // expected exception
+ }
+ }
+
+ /** query parser that doesn't expand synonyms when users use double quotes */
+ private class SmartQueryParser extends QueryParser {
+ Analyzer morePrecise = new Analyzer2();
+
+ public SmartQueryParser() {
+ super(TEST_VERSION_CURRENT, "field", new Analyzer1());
+ }
+
+ @Override
+ protected Query getFieldQuery(String field, String queryText, boolean quoted)
+ throws ParseException {
+ if (quoted) return newFieldQuery(morePrecise, field, queryText, quoted);
+ else return super.getFieldQuery(field, queryText, quoted);
+ }
+ }
+
+ @Override
+ public void testNewFieldQuery() throws Exception {
+ /** ordinary behavior, synonyms form uncoordinated boolean query */
+ QueryParser dumb = new QueryParser(TEST_VERSION_CURRENT, "field",
+ new Analyzer1());
+ BooleanQuery expanded = new BooleanQuery(true);
+ expanded.add(new TermQuery(new Term("field", "dogs")),
+ BooleanClause.Occur.SHOULD);
+ expanded.add(new TermQuery(new Term("field", "dog")),
+ BooleanClause.Occur.SHOULD);
+ assertEquals(expanded, dumb.parse("\"dogs\""));
+ /** even with the phrase operator the behavior is the same */
+ assertEquals(expanded, dumb.parse("dogs"));
+
+ /**
+ * custom behavior, the synonyms are expanded, unless you use quote operator
+ */
+ QueryParser smart = new SmartQueryParser();
+ assertEquals(expanded, smart.parse("dogs"));
+
+ Query unexpanded = new TermQuery(new Term("field", "dogs"));
+ assertEquals(unexpanded, smart.parse("\"dogs\""));
+ }
+
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/ext/TestExtendableQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/ext/TestExtendableQueryParser.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/ext/TestExtendableQueryParser.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/ext/TestExtendableQueryParser.java Mon Aug 13 13:52:46 2012
@@ -25,7 +25,7 @@ import org.apache.lucene.analysis.MockTo
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.queryparser.classic.QueryParserBase;
-import org.apache.lucene.queryparser.util.QueryParserTestBase;
+import org.apache.lucene.queryparser.classic.TestQueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
@@ -34,7 +34,7 @@ import org.apache.lucene.search.TermQuer
/**
* Testcase for the class {@link ExtendableQueryParser}
*/
-public class TestExtendableQueryParser extends QueryParserTestBase {
+public class TestExtendableQueryParser extends TestQueryParser {
private static char[] DELIMITERS = new char[] {
Extensions.DEFAULT_EXTENSION_FIELD_DELIMITER, '-', '|' };
@@ -48,8 +48,8 @@ public class TestExtendableQueryParser e
if (a == null)
a = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true);
QueryParser qp = extensions == null ? new ExtendableQueryParser(
- TEST_VERSION_CURRENT, "field", a) : new ExtendableQueryParser(
- TEST_VERSION_CURRENT, "field", a, extensions);
+ TEST_VERSION_CURRENT, getDefaultField(), a) : new ExtendableQueryParser(
+ TEST_VERSION_CURRENT, getDefaultField(), a, extensions);
qp.setDefaultOperator(QueryParserBase.OR_OPERATOR);
return qp;
}
@@ -92,7 +92,7 @@ public class TestExtendableQueryParser e
assertTrue("expected instance of TermQuery but was " + query.getClass(),
query instanceof TermQuery);
tquery = (TermQuery) query;
- assertEquals("field", tquery.getTerm().field());
+ assertEquals(getDefaultField(), tquery.getTerm().field());
assertEquals("bar", tquery.getTerm().text());
}
}
@@ -108,7 +108,7 @@ public class TestExtendableQueryParser e
assertTrue("expected instance of TermQuery but was " + parse.getClass(),
parse instanceof TermQuery);
TermQuery tquery = (TermQuery) parse;
- assertEquals("field", tquery.getTerm().field());
+ assertEquals(getDefaultField(), tquery.getTerm().field());
assertEquals("foo & bar", tquery.getTerm().text());
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java Mon Aug 13 13:52:46 2012
@@ -131,11 +131,11 @@ public class TestMultiAnalyzerQPHelper e
qp.setAnalyzer(new PosIncrementAnalyzer());
assertEquals("quick brown", qp.parse("the quick brown", "").toString());
- assertEquals("\"quick brown\"", qp.parse("\"the quick brown\"", "")
+ assertEquals("\"? quick brown\"", qp.parse("\"the quick brown\"", "")
.toString());
assertEquals("quick brown fox", qp.parse("the quick brown fox", "")
.toString());
- assertEquals("\"quick brown fox\"", qp.parse("\"the quick brown fox\"", "")
+ assertEquals("\"? quick brown fox\"", qp.parse("\"the quick brown fox\"", "")
.toString());
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java Mon Aug 13 13:52:46 2012
@@ -183,15 +183,15 @@ public class TestMultiFieldQPHelper exte
String[] queries2 = { "+one", "+two" };
q = QueryParserUtil.parse(queries2, fields, new MockAnalyzer(random()));
- assertEquals("(+b:one) (+t:two)", q.toString());
+ assertEquals("b:one t:two", q.toString());
String[] queries3 = { "one", "+two" };
q = QueryParserUtil.parse(queries3, fields, new MockAnalyzer(random()));
- assertEquals("b:one (+t:two)", q.toString());
+ assertEquals("b:one t:two", q.toString());
String[] queries4 = { "one +more", "+two" };
q = QueryParserUtil.parse(queries4, fields, new MockAnalyzer(random()));
- assertEquals("(b:one +b:more) (+t:two)", q.toString());
+ assertEquals("(b:one +b:more) t:two", q.toString());
String[] queries5 = { "blah" };
try {
Modified: lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java?rev=1372423&r1=1372422&r2=1372423&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java Mon Aug 13 13:52:46 2012
@@ -491,6 +491,15 @@ public class TestQPHelper extends Lucene
assertQueryEquals(".NET", a, ".NET");
}
+ public void testGroup() throws Exception {
+ assertQueryEquals("!(a AND b) OR c", null, "-(+a +b) c");
+ assertQueryEquals("!(a AND b) AND c", null, "-(+a +b) +c");
+ assertQueryEquals("((a AND b) AND c)", null, "+(+a +b) +c");
+ assertQueryEquals("(a AND b) AND c", null, "+(+a +b) +c");
+ assertQueryEquals("b !(a AND b)", null, "b -(+a +b)");
+ assertQueryEquals("(a AND b)^4 OR c", null, "((+a +b)^4.0) c");
+ }
+
public void testSlop() throws Exception {
assertQueryEquals("\"term germ\"~2", null, "\"term germ\"~2");
@@ -1313,8 +1322,8 @@ public class TestQPHelper extends Lucene
parser.setAnalyzer(new MockAnalyzer(random()));
BooleanQuery exp = new BooleanQuery();
- exp.add(new BooleanClause(new RegexpQuery(new Term("b", "ab.+")), BooleanClause.Occur.MUST));
- exp.add(new BooleanClause(new RegexpQuery(new Term("t", "ab.+")), BooleanClause.Occur.MUST));
+ exp.add(new BooleanClause(new RegexpQuery(new Term("b", "ab.+")), BooleanClause.Occur.SHOULD));//TODO spezification? was "MUST"
+ exp.add(new BooleanClause(new RegexpQuery(new Term("t", "ab.+")), BooleanClause.Occur.SHOULD));//TODO spezification? was "MUST"
assertEquals(exp, parser.parse("/ab.+/", null));