You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ha...@apache.org on 2013/08/13 06:06:27 UTC
svn commit: r1513336 [6/11] - in /lucene/dev/branches/lucene3069/lucene: ./
analysis/ analysis/common/
analysis/common/src/java/org/apache/lucene/analysis/charfilter/
analysis/common/src/java/org/apache/lucene/analysis/hunspell/
analysis/common/src/jav...
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterConfig.java Tue Aug 13 04:06:18 2013
@@ -37,6 +37,7 @@ import org.apache.lucene.search.similari
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.InfoStream;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.SetOnce.AlreadySetException;
import org.junit.Test;
public class TestIndexWriterConfig extends LuceneTestCase {
@@ -65,7 +66,6 @@ public class TestIndexWriterConfig exten
assertEquals(OpenMode.CREATE_OR_APPEND, conf.getOpenMode());
// we don't need to assert this, it should be unspecified
assertTrue(IndexSearcher.getDefaultSimilarity() == conf.getSimilarity());
- assertEquals(IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL, conf.getTermIndexInterval());
assertEquals(IndexWriterConfig.getDefaultWriteLockTimeout(), conf.getWriteLockTimeout());
assertEquals(IndexWriterConfig.WRITE_LOCK_TIMEOUT, IndexWriterConfig.getDefaultWriteLockTimeout());
assertEquals(IndexWriterConfig.DEFAULT_MAX_BUFFERED_DELETE_TERMS, conf.getMaxBufferedDeleteTerms());
@@ -74,7 +74,6 @@ public class TestIndexWriterConfig exten
assertEquals(IndexWriterConfig.DEFAULT_READER_POOLING, conf.getReaderPooling());
assertTrue(DocumentsWriterPerThread.defaultIndexingChain == conf.getIndexingChain());
assertNull(conf.getMergedSegmentWarmer());
- assertEquals(IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR, conf.getReaderTermsIndexDivisor());
assertEquals(TieredMergePolicy.class, conf.getMergePolicy().getClass());
assertEquals(ThreadAffinityDocumentsWriterThreadPool.class, conf.getIndexerThreadPool().getClass());
assertEquals(FlushByRamOrCountsPolicy.class, conf.getFlushPolicy().getClass());
@@ -91,7 +90,6 @@ public class TestIndexWriterConfig exten
getters.add("getMergeScheduler");
getters.add("getOpenMode");
getters.add("getSimilarity");
- getters.add("getTermIndexInterval");
getters.add("getWriteLockTimeout");
getters.add("getDefaultWriteLockTimeout");
getters.add("getMaxBufferedDeleteTerms");
@@ -103,7 +101,6 @@ public class TestIndexWriterConfig exten
getters.add("getMaxThreadStates");
getters.add("getReaderPooling");
getters.add("getIndexerThreadPool");
- getters.add("getReaderTermsIndexDivisor");
getters.add("getFlushPolicy");
getters.add("getRAMPerThreadHardLimitMB");
getters.add("getCodec");
@@ -145,18 +142,30 @@ public class TestIndexWriterConfig exten
@Test
public void testReuse() throws Exception {
Directory dir = newDirectory();
- // test that if the same IWC is reused across two IWs, it is cloned by each.
+ // test that IWC cannot be reused across two IWs
IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, null);
- RandomIndexWriter iw = new RandomIndexWriter(random(), dir, conf);
- LiveIndexWriterConfig liveConf1 = iw.w.getConfig();
- iw.close();
-
- iw = new RandomIndexWriter(random(), dir, conf);
- LiveIndexWriterConfig liveConf2 = iw.w.getConfig();
- iw.close();
+ new RandomIndexWriter(random(), dir, conf).close();
+
+ // this should fail
+ try {
+ assertNotNull(new RandomIndexWriter(random(), dir, conf));
+ fail("should have hit AlreadySetException");
+ } catch (AlreadySetException e) {
+ // expected
+ }
+
+ // also cloning it won't help, after it has been used already
+ try {
+ assertNotNull(new RandomIndexWriter(random(), dir, conf.clone()));
+ fail("should have hit AlreadySetException");
+ } catch (AlreadySetException e) {
+ // expected
+ }
- // LiveIndexWriterConfig's "copy" constructor doesn't clone objects.
- assertNotSame("IndexWriterConfig should have been cloned", liveConf1.getMergePolicy(), liveConf2.getMergePolicy());
+ // if it's cloned in advance, it should be ok
+ conf = newIndexWriterConfig(TEST_VERSION_CURRENT, null);
+ new RandomIndexWriter(random(), dir, conf.clone()).close();
+ new RandomIndexWriter(random(), dir, conf.clone()).close();
dir.close();
}
@@ -187,14 +196,12 @@ public class TestIndexWriterConfig exten
public void testConstants() throws Exception {
// Tests that the values of the constants does not change
assertEquals(1000, IndexWriterConfig.WRITE_LOCK_TIMEOUT);
- assertEquals(32, IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL);
assertEquals(-1, IndexWriterConfig.DISABLE_AUTO_FLUSH);
assertEquals(IndexWriterConfig.DISABLE_AUTO_FLUSH, IndexWriterConfig.DEFAULT_MAX_BUFFERED_DELETE_TERMS);
assertEquals(IndexWriterConfig.DISABLE_AUTO_FLUSH, IndexWriterConfig.DEFAULT_MAX_BUFFERED_DOCS);
assertEquals(16.0, IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB, 0.0);
assertEquals(false, IndexWriterConfig.DEFAULT_READER_POOLING);
assertEquals(true, IndexWriterConfig.DEFAULT_USE_COMPOUND_FILE_SYSTEM);
- assertEquals(DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR);
}
@Test
@@ -328,23 +335,6 @@ public class TestIndexWriterConfig exten
} catch (IllegalArgumentException e) {
// this is expected
}
-
- // Test setReaderTermsIndexDivisor
- try {
- conf.setReaderTermsIndexDivisor(0);
- fail("should not have succeeded to set termsIndexDivisor to 0");
- } catch (IllegalArgumentException e) {
- // this is expected
- }
-
- // Setting to -1 is ok
- conf.setReaderTermsIndexDivisor(-1);
- try {
- conf.setReaderTermsIndexDivisor(-2);
- fail("should not have succeeded to set termsIndexDivisor to < -1");
- } catch (IllegalArgumentException e) {
- // this is expected
- }
try {
conf.setRAMPerThreadHardLimitMB(2048);
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java Tue Aug 13 04:06:18 2013
@@ -1152,7 +1152,7 @@ public class TestIndexWriterDelete exten
Directory dir = newDirectory();
IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
iwc.setMaxBufferedDocs(2);
- IndexWriter w = new IndexWriter(dir, iwc);
+ IndexWriter w = new IndexWriter(dir, iwc.clone());
Document doc = new Document();
doc.add(newField("field", "0", StringField.TYPE_NOT_STORED));
w.addDocument(doc);
@@ -1177,7 +1177,7 @@ public class TestIndexWriterDelete exten
// Segment should have deletions:
assertTrue(s.contains("has deletions"));
- w = new IndexWriter(dir, iwc);
+ w = new IndexWriter(dir, iwc.clone());
w.forceMerge(1);
w.close();
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterForceMerge.java Tue Aug 13 04:06:18 2013
@@ -130,7 +130,6 @@ public class TestIndexWriterForceMerge e
for(int j=0;j<500;j++) {
TestIndexWriter.addDocWithIndex(writer, j);
}
- final int termIndexInterval = writer.getConfig().getTermIndexInterval();
// force one extra segment w/ different doc store so
// we see the doc stores get merged
writer.commit();
@@ -152,10 +151,7 @@ public class TestIndexWriterForceMerge e
dir.resetMaxUsedSizeInBytes();
dir.setTrackDiskUsage(true);
- // Import to use same term index interval else a
- // smaller one here could increase the disk usage and
- // cause a false failure:
- writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())).setOpenMode(OpenMode.APPEND).setTermIndexInterval(termIndexInterval).setMergePolicy(newLogMergePolicy()));
+ writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())).setOpenMode(OpenMode.APPEND).setMergePolicy(newLogMergePolicy()));
writer.forceMerge(1);
writer.close();
long maxDiskUsage = dir.getMaxUsedSizeInBytes();
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterReader.java Tue Aug 13 04:06:18 2013
@@ -314,7 +314,7 @@ public class TestIndexWriterReader exten
boolean doFullMerge = true;
Directory dir1 = newDirectory();
- IndexWriter writer = new IndexWriter(dir1, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())).setReaderTermsIndexDivisor(2));
+ IndexWriter writer = new IndexWriter(dir1, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())));
// create the index
createIndexNoClose(!doFullMerge, "index1", writer);
writer.flush(false, true);
@@ -1006,36 +1006,6 @@ public class TestIndexWriterReader exten
assertTrue(didWarm.get());
}
- public void testNoTermsIndex() throws Exception {
- // Some Codecs don't honor the ReaderTermsIndexDivisor, so skip the test if
- // they're picked.
- IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT,
- new MockAnalyzer(random())).setReaderTermsIndexDivisor(-1);
-
- // Don't proceed if picked Codec is in the list of illegal ones.
- final String format = _TestUtil.getPostingsFormat("f");
- assumeFalse("Format: " + format + " does not support ReaderTermsIndexDivisor!",
- (format.equals("SimpleText") || format.equals("Memory") || format.equals("Direct") ||
- format.equals("TempFST") || format.equals("TempFSTOrd")));
-
- Directory dir = newDirectory();
- IndexWriter w = new IndexWriter(dir, conf);
- Document doc = new Document();
- doc.add(new TextField("f", "val", Field.Store.NO));
- w.addDocument(doc);
- SegmentReader r = getOnlySegmentReader(DirectoryReader.open(w, true));
- try {
- _TestUtil.docs(random(), r, "f", new BytesRef("val"), null, null, DocsEnum.FLAG_NONE);
- fail("should have failed to seek since terms index was not loaded.");
- } catch (IllegalStateException e) {
- // expected - we didn't load the term index
- } finally {
- r.close();
- w.close();
- dir.close();
- }
- }
-
public void testReopenAfterNoRealChange() throws Exception {
Directory d = newDirectory();
IndexWriter w = new IndexWriter(
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java Tue Aug 13 04:06:18 2013
@@ -70,7 +70,7 @@ public class TestPayloadsOnVectors exten
Terms terms = reader.getTermVector(1, "field");
assert terms != null;
TermsEnum termsEnum = terms.iterator(null);
- assertTrue(termsEnum.seekExact(new BytesRef("withPayload"), true));
+ assertTrue(termsEnum.seekExact(new BytesRef("withPayload")));
DocsAndPositionsEnum de = termsEnum.docsAndPositions(null, null);
assertEquals(0, de.nextDoc());
assertEquals(0, de.nextPosition());
@@ -112,7 +112,7 @@ public class TestPayloadsOnVectors exten
Terms terms = reader.getTermVector(0, "field");
assert terms != null;
TermsEnum termsEnum = terms.iterator(null);
- assertTrue(termsEnum.seekExact(new BytesRef("withPayload"), true));
+ assertTrue(termsEnum.seekExact(new BytesRef("withPayload")));
DocsAndPositionsEnum de = termsEnum.docsAndPositions(null, null);
assertEquals(0, de.nextDoc());
assertEquals(3, de.nextPosition());
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java Tue Aug 13 04:06:18 2013
@@ -227,7 +227,7 @@ public class TestPerSegmentDeletes exten
Fields fields = MultiFields.getFields(reader);
Terms cterms = fields.terms(term.field);
TermsEnum ctermsEnum = cterms.iterator(null);
- if (ctermsEnum.seekExact(new BytesRef(term.text()), false)) {
+ if (ctermsEnum.seekExact(new BytesRef(term.text()))) {
DocsEnum docsEnum = _TestUtil.docs(random(), ctermsEnum, bits, null, DocsEnum.FLAG_NONE);
return toArray(docsEnum);
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java Tue Aug 13 04:06:18 2013
@@ -301,7 +301,7 @@ public class TestPostingsOffsets extends
final FieldCache.Ints docIDToID = FieldCache.DEFAULT.getInts(sub, "id", false);
for(String term : terms) {
//System.out.println(" term=" + term);
- if (termsEnum.seekExact(new BytesRef(term), random().nextBoolean())) {
+ if (termsEnum.seekExact(new BytesRef(term))) {
docs = termsEnum.docs(null, docs);
assertNotNull(docs);
int doc;
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentMerger.java Tue Aug 13 04:06:18 2013
@@ -54,8 +54,8 @@ public class TestSegmentMerger extends L
SegmentInfoPerCommit info1 = DocHelper.writeDoc(random(), merge1Dir, doc1);
DocHelper.setupDoc(doc2);
SegmentInfoPerCommit info2 = DocHelper.writeDoc(random(), merge2Dir, doc2);
- reader1 = new SegmentReader(info1, DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, newIOContext(random()));
- reader2 = new SegmentReader(info2, DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, newIOContext(random()));
+ reader1 = new SegmentReader(info1, newIOContext(random()));
+ reader2 = new SegmentReader(info2, newIOContext(random()));
}
@Override
@@ -81,7 +81,7 @@ public class TestSegmentMerger extends L
final SegmentInfo si = new SegmentInfo(mergedDir, Constants.LUCENE_MAIN_VERSION, mergedSegment, -1, false, codec, null, null);
SegmentMerger merger = new SegmentMerger(Arrays.<AtomicReader>asList(reader1, reader2),
- si, InfoStream.getDefault(), mergedDir, IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL,
+ si, InfoStream.getDefault(), mergedDir,
MergeState.CheckAbort.NONE, new FieldInfos.FieldNumbers(), newIOContext(random()));
MergeState mergeState = merger.merge();
int docsMerged = mergeState.segmentInfo.getDocCount();
@@ -91,7 +91,7 @@ public class TestSegmentMerger extends L
new SegmentInfo(mergedDir, Constants.LUCENE_MAIN_VERSION, mergedSegment, docsMerged,
false, codec, null, null),
0, -1L),
- DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, newIOContext(random()));
+ newIOContext(random()));
assertTrue(mergedReader != null);
assertTrue(mergedReader.numDocs() == 2);
StoredDocument newDoc1 = mergedReader.document(0);
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentReader.java Tue Aug 13 04:06:18 2013
@@ -43,7 +43,7 @@ public class TestSegmentReader extends L
dir = newDirectory();
DocHelper.setupDoc(testDoc);
SegmentInfoPerCommit info = DocHelper.writeDoc(random(), dir, testDoc);
- reader = new SegmentReader(info, DirectoryReader.DEFAULT_TERMS_INDEX_DIVISOR, IOContext.READ);
+ reader = new SegmentReader(info, IOContext.READ);
}
@Override
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentTermDocs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentTermDocs.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentTermDocs.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSegmentTermDocs.java Tue Aug 13 04:06:18 2013
@@ -50,16 +50,11 @@ public class TestSegmentTermDocs extends
public void test() {
assertTrue(dir != null);
}
-
- public void testTermDocs() throws IOException {
- testTermDocs(1);
- }
- public void testTermDocs(int indexDivisor) throws IOException {
+ public void testTermDocs() throws IOException {
//After adding the document, we should be able to read it back in
- SegmentReader reader = new SegmentReader(info, indexDivisor, newIOContext(random()));
+ SegmentReader reader = new SegmentReader(info, newIOContext(random()));
assertTrue(reader != null);
- assertEquals(indexDivisor, reader.getTermInfosIndexDivisor());
TermsEnum terms = reader.fields().terms(DocHelper.TEXT_FIELD_2_KEY).iterator(null);
terms.seekCeil(new BytesRef("field"));
@@ -74,13 +69,9 @@ public class TestSegmentTermDocs extends
}
public void testBadSeek() throws IOException {
- testBadSeek(1);
- }
-
- public void testBadSeek(int indexDivisor) throws IOException {
{
//After adding the document, we should be able to read it back in
- SegmentReader reader = new SegmentReader(info, indexDivisor, newIOContext(random()));
+ SegmentReader reader = new SegmentReader(info, newIOContext(random()));
assertTrue(reader != null);
DocsEnum termDocs = _TestUtil.docs(random(), reader,
"textField2",
@@ -94,7 +85,7 @@ public class TestSegmentTermDocs extends
}
{
//After adding the document, we should be able to read it back in
- SegmentReader reader = new SegmentReader(info, indexDivisor, newIOContext(random()));
+ SegmentReader reader = new SegmentReader(info, newIOContext(random()));
assertTrue(reader != null);
DocsEnum termDocs = _TestUtil.docs(random(), reader,
"junk",
@@ -108,10 +99,6 @@ public class TestSegmentTermDocs extends
}
public void testSkipTo() throws IOException {
- testSkipTo(1);
- }
-
- public void testSkipTo(int indexDivisor) throws IOException {
Directory dir = newDirectory();
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
@@ -131,7 +118,7 @@ public class TestSegmentTermDocs extends
writer.forceMerge(1);
writer.close();
- IndexReader reader = DirectoryReader.open(dir, indexDivisor);
+ IndexReader reader = DirectoryReader.open(dir);
DocsEnum tdocs = _TestUtil.docs(random(), reader,
ta.field(),
@@ -267,15 +254,7 @@ public class TestSegmentTermDocs extends
reader.close();
dir.close();
}
-
- public void testIndexDivisor() throws IOException {
- testDoc = new Document();
- DocHelper.setupDoc(testDoc);
- DocHelper.writeDoc(random(), dir, testDoc);
- testTermDocs(2);
- testBadSeek(2);
- testSkipTo(2);
- }
+
private void addDoc(IndexWriter writer, String value) throws IOException
{
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java Tue Aug 13 04:06:18 2013
@@ -42,7 +42,7 @@ public class TestSnapshotDeletionPolicy
public static final String INDEX_PATH = "test.snapshots";
protected IndexWriterConfig getConfig(Random random, IndexDeletionPolicy dp) {
- IndexWriterConfig conf = newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random));
+ IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random));
if (dp != null) {
conf.setIndexDeletionPolicy(dp);
}
@@ -323,8 +323,8 @@ public class TestSnapshotDeletionPolicy
int numSnapshots = 2;
Directory dir = newDirectory();
- IndexWriter writer = new IndexWriter(dir, getConfig(random(), getDeletionPolicy()));
- SnapshotDeletionPolicy sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
+ SnapshotDeletionPolicy sdp = getDeletionPolicy();
+ IndexWriter writer = new IndexWriter(dir, getConfig(random(), sdp));
prepareIndexAndSnapshots(sdp, writer, numSnapshots);
writer.close();
@@ -333,8 +333,7 @@ public class TestSnapshotDeletionPolicy
// this does the actual rollback
writer.commit();
writer.deleteUnusedFiles();
- //sdp = (SnapshotDeletionPolicy) writer.getConfig().getIndexDeletionPolicy();
- assertSnapshotExists(dir, sdp, numSnapshots - 1, true);
+ assertSnapshotExists(dir, sdp, numSnapshots - 1, false);
writer.close();
// but 'snapshot1' files will still exist (need to release snapshot before they can be deleted).
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java Tue Aug 13 04:06:18 2013
@@ -354,7 +354,7 @@ public class TestStressIndexing2 extends
}
termDocs1 = _TestUtil.docs(random(), termsEnum, liveDocs1, termDocs1, DocsEnum.FLAG_NONE);
- if (termsEnum2.seekExact(term, false)) {
+ if (termsEnum2.seekExact(term)) {
termDocs2 = _TestUtil.docs(random(), termsEnum2, liveDocs2, termDocs2, DocsEnum.FLAG_NONE);
} else {
termDocs2 = null;
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java Tue Aug 13 04:06:18 2013
@@ -331,4 +331,64 @@ public class TestTermVectorsReader exten
}
reader.close();
}
+
+ public void testIllegalIndexableField() throws Exception {
+ Directory dir = newDirectory();
+ RandomIndexWriter w = new RandomIndexWriter(random(), dir);
+ FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setStoreTermVectors(true);
+ ft.setStoreTermVectorPayloads(true);
+ Document doc = new Document();
+ doc.add(new Field("field", "value", ft));
+ try {
+ w.addDocument(doc);
+ fail("did not hit exception");
+ } catch (IllegalArgumentException iae) {
+ // Expected
+ assertEquals("cannot index term vector payloads without term vector positions (field=\"field\")", iae.getMessage());
+ }
+
+ ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setStoreTermVectors(false);
+ ft.setStoreTermVectorOffsets(true);
+ doc = new Document();
+ doc.add(new Field("field", "value", ft));
+ try {
+ w.addDocument(doc);
+ fail("did not hit exception");
+ } catch (IllegalArgumentException iae) {
+ // Expected
+ assertEquals("cannot index term vector offsets when term vectors are not indexed (field=\"field\")", iae.getMessage());
+ }
+
+ ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setStoreTermVectors(false);
+ ft.setStoreTermVectorPositions(true);
+ doc = new Document();
+ doc.add(new Field("field", "value", ft));
+ try {
+ w.addDocument(doc);
+ fail("did not hit exception");
+ } catch (IllegalArgumentException iae) {
+ // Expected
+ assertEquals("cannot index term vector positions when term vectors are not indexed (field=\"field\")", iae.getMessage());
+ }
+
+ ft = new FieldType(TextField.TYPE_NOT_STORED);
+ ft.setStoreTermVectors(false);
+ ft.setStoreTermVectorPayloads(true);
+ doc = new Document();
+ doc.add(new Field("field", "value", ft));
+ try {
+ w.addDocument(doc);
+ fail("did not hit exception");
+ } catch (IllegalArgumentException iae) {
+ // Expected
+ assertEquals("cannot index term vector payloads when term vectors are not indexed (field=\"field\")", iae.getMessage());
+ }
+
+ w.close();
+
+ dir.close();
+ }
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java Tue Aug 13 04:06:18 2013
@@ -111,7 +111,7 @@ public class TestTermsEnum extends Lucen
System.out.println("TEST: iter seekCeil target=" + target.utf8ToString() + " exists=" + exists);
}
// seekCeil
- final TermsEnum.SeekStatus status = termsEnum.seekCeil(target, random().nextBoolean());
+ final TermsEnum.SeekStatus status = termsEnum.seekCeil(target);
if (VERBOSE) {
System.out.println(" got " + status);
}
@@ -134,7 +134,7 @@ public class TestTermsEnum extends Lucen
System.out.println("TEST: iter seekExact target=" + target.utf8ToString() + " exists=" + exists);
}
// seekExact
- final boolean result = termsEnum.seekExact(target, false);
+ final boolean result = termsEnum.seekExact(target);
if (VERBOSE) {
System.out.println(" got " + result);
}
@@ -570,7 +570,7 @@ public class TestTermsEnum extends Lucen
// sugar
private boolean seekExact(TermsEnum te, String term) throws IOException {
- return te.seekExact(new BytesRef(term), random().nextBoolean());
+ return te.seekExact(new BytesRef(term));
}
// sugar
@@ -665,13 +665,13 @@ public class TestTermsEnum extends Lucen
if (VERBOSE) {
System.out.println(" seekExact");
}
- assertEquals(loc >= 0, te.seekExact(t, random().nextBoolean()));
+ assertEquals(loc >= 0, te.seekExact(t));
} else {
if (VERBOSE) {
System.out.println(" seekCeil");
}
- final TermsEnum.SeekStatus result = te.seekCeil(t, random().nextBoolean());
+ final TermsEnum.SeekStatus result = te.seekCeil(t);
if (VERBOSE) {
System.out.println(" got " + result);
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum2.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum2.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum2.java Tue Aug 13 04:06:18 2013
@@ -117,10 +117,10 @@ public class TestTermsEnum2 extends Luce
// term is accepted
if (random().nextBoolean()) {
// seek exact
- assertTrue(te.seekExact(term, random().nextBoolean()));
+ assertTrue(te.seekExact(term));
} else {
// seek ceil
- assertEquals(SeekStatus.FOUND, te.seekCeil(term, random().nextBoolean()));
+ assertEquals(SeekStatus.FOUND, te.seekCeil(term));
assertEquals(term, te.term());
}
}
@@ -138,10 +138,10 @@ public class TestTermsEnum2 extends Luce
if (c == 0) {
assertEquals(term, te.next());
} else if (c == 1) {
- assertEquals(SeekStatus.FOUND, te.seekCeil(term, random().nextBoolean()));
+ assertEquals(SeekStatus.FOUND, te.seekCeil(term));
assertEquals(term, te.term());
} else {
- assertTrue(te.seekExact(term, random().nextBoolean()));
+ assertTrue(te.seekExact(term));
}
}
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestFieldCache.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestFieldCache.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestFieldCache.java Tue Aug 13 04:06:18 2013
@@ -735,7 +735,7 @@ public class TestFieldCache extends Luce
Directory dir = newDirectory();
IndexWriterConfig cfg = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
cfg.setMergePolicy(newLogMergePolicy());
- RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
+ RandomIndexWriter iw = new RandomIndexWriter(random(), dir, cfg);
Document doc = new Document();
IntField field = new IntField("f", 0, Store.YES);
doc.add(field);
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestIndexSearcher.java Tue Aug 13 04:06:18 2013
@@ -29,9 +29,11 @@ import org.apache.lucene.index.RandomInd
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NamedThreadFactory;
import org.apache.lucene.util._TestUtil;
+import org.junit.Test;
public class TestIndexSearcher extends LuceneTestCase {
Directory dir;
@@ -116,4 +118,25 @@ public class TestIndexSearcher extends L
_TestUtil.shutdownExecutorService(service);
}
+
+ @Test
+ public void testSearchAfterPassedMaxDoc() throws Exception {
+ // LUCENE-5128: ensure we get a meaningful message if searchAfter exceeds maxDoc
+ Directory dir = newDirectory();
+ RandomIndexWriter w = new RandomIndexWriter(random(), dir);
+ w.addDocument(new Document());
+ IndexReader r = w.getReader();
+ w.close();
+
+ IndexSearcher s = new IndexSearcher(r);
+ try {
+ s.searchAfter(new ScoreDoc(r.maxDoc(), 0.54f), new MatchAllDocsQuery(), 10);
+ fail("should have hit IllegalArgumentException when searchAfter exceeds maxDoc");
+ } catch (IllegalArgumentException e) {
+ // ok
+ } finally {
+ IOUtils.close(r, dir);
+ }
+ }
+
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/TestMinShouldMatch2.java Tue Aug 13 04:06:18 2013
@@ -294,7 +294,7 @@ public class TestMinShouldMatch2 extends
if (ord >= 0) {
boolean success = ords.add(ord);
assert success; // no dups
- TermContext context = TermContext.build(reader.getContext(), term, true);
+ TermContext context = TermContext.build(reader.getContext(), term);
SimWeight w = weight.similarity.computeWeight(1f,
searcher.collectionStatistics("field"),
searcher.termStatistics(term, context));
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/MultiSpansWrapper.java Tue Aug 13 04:06:18 2013
@@ -60,7 +60,7 @@ public class MultiSpansWrapper extends S
TreeSet<Term> terms = new TreeSet<Term>();
query.extractTerms(terms);
for (Term term : terms) {
- termContexts.put(term, TermContext.build(topLevelReaderContext, term, true));
+ termContexts.put(term, TermContext.build(topLevelReaderContext, term));
}
final List<AtomicReaderContext> leaves = topLevelReaderContext.leaves();
if(leaves.size() == 1) {
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestBasics.java Tue Aug 13 04:06:18 2013
@@ -364,6 +364,77 @@ public class TestBasics extends LuceneTe
}
@Test
+ public void testSpanNotWindowOne() throws Exception {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "forty"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "one"));
+ SpanNotQuery query = new SpanNotQuery(near, term3, 1, 1);
+
+ checkHits(query, new int[]
+ {840, 842, 843, 844, 845, 846, 847, 848, 849,
+ 1840, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849});
+
+ assertTrue(searcher.explain(query, 840).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 1842).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowTwoBefore() throws Exception {
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "forty"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "one"));
+ SpanNotQuery query = new SpanNotQuery(near, term3, 2, 0);
+
+ checkHits(query, new int[]
+ {840, 841, 842, 843, 844, 845, 846, 847, 848, 849});
+
+ assertTrue(searcher.explain(query, 840).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 849).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowNeg() throws Exception {
+ //test handling of invalid window < 0
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "eight"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "one"));
+ SpanNearQuery near = new SpanNearQuery(new SpanQuery[] {term1, term2},
+ 4, true);
+ SpanTermQuery term3 = new SpanTermQuery(new Term("field", "forty"));
+
+ SpanOrQuery or = new SpanOrQuery(term3);
+
+ SpanNotQuery query = new SpanNotQuery(near, or);
+
+ checkHits(query, new int[]
+ {801, 821, 831, 851, 861, 871, 881, 891,
+ 1801, 1821, 1831, 1851, 1861, 1871, 1881, 1891});
+
+ assertTrue(searcher.explain(query, 801).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 891).getValue() > 0.0f);
+ }
+
+ @Test
+ public void testSpanNotWindowDoubleExcludesBefore() throws Exception {
+ //test hitting two excludes before an include
+ SpanTermQuery term1 = new SpanTermQuery(new Term("field", "forty"));
+ SpanTermQuery term2 = new SpanTermQuery(new Term("field", "two"));
+ SpanNearQuery near = new SpanNearQuery(new SpanTermQuery[]{term1, term2}, 2, true);
+ SpanTermQuery exclude = new SpanTermQuery(new Term("field", "one"));
+
+ SpanNotQuery query = new SpanNotQuery(near, exclude, 4, 1);
+
+ checkHits(query, new int[]
+ {42, 242, 342, 442, 542, 642, 742, 842, 942});
+
+ assertTrue(searcher.explain(query, 242).getValue() > 0.0f);
+ assertTrue(searcher.explain(query, 942).getValue() > 0.0f);
+ }
+
+ @Test
public void testSpanFirst() throws Exception {
SpanTermQuery term1 = new SpanTermQuery(new Term("field", "five"));
SpanFirstQuery query = new SpanFirstQuery(term1, 1);
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java Tue Aug 13 04:06:18 2013
@@ -84,7 +84,8 @@ public class TestSpans extends LuceneTes
"u2 xx u1 u2",
"u2 u1 xx u2",
"u1 u2 xx u2",
- "t1 t2 t1 t3 t2 t3"
+ "t1 t2 t1 t3 t2 t3",
+ "s2 s1 s1 xx xx s2 xx s2 xx s1 xx xx xx xx xx s2 xx"
};
public SpanTermQuery makeSpanTermQuery(String text) {
@@ -502,4 +503,52 @@ public class TestSpans extends LuceneTes
reader.close();
dir.close();
}
+
+
+ public void testSpanNots() throws Throwable{
+ assertEquals("SpanNotIncludeExcludeSame1", 0, spanCount("s2", "s2", 0, 0), 0);
+ assertEquals("SpanNotIncludeExcludeSame2", 0, spanCount("s2", "s2", 10, 10), 0);
+
+ //focus on behind
+ assertEquals("SpanNotS2NotS1_6_0", 1, spanCount("s2", "s1", 6, 0));
+ assertEquals("SpanNotS2NotS1_5_0", 2, spanCount("s2", "s1", 5, 0));
+ assertEquals("SpanNotS2NotS1_3_0", 3, spanCount("s2", "s1", 3, 0));
+ assertEquals("SpanNotS2NotS1_2_0", 4, spanCount("s2", "s1", 2, 0));
+ assertEquals("SpanNotS2NotS1_0_0", 4, spanCount("s2", "s1", 0, 0));
+
+ //focus on both
+ assertEquals("SpanNotS2NotS1_3_1", 2, spanCount("s2", "s1", 3, 1));
+ assertEquals("SpanNotS2NotS1_2_1", 3, spanCount("s2", "s1", 2, 1));
+ assertEquals("SpanNotS2NotS1_1_1", 3, spanCount("s2", "s1", 1, 1));
+ assertEquals("SpanNotS2NotS1_10_10", 0, spanCount("s2", "s1", 10, 10));
+
+ //focus on ahead
+ assertEquals("SpanNotS1NotS2_10_10", 0, spanCount("s1", "s2", 10, 10));
+ assertEquals("SpanNotS1NotS2_0_1", 3, spanCount("s1", "s2", 0, 1));
+ assertEquals("SpanNotS1NotS2_0_2", 3, spanCount("s1", "s2", 0, 2));
+ assertEquals("SpanNotS1NotS2_0_3", 2, spanCount("s1", "s2", 0, 3));
+ assertEquals("SpanNotS1NotS2_0_4", 1, spanCount("s1", "s2", 0, 4));
+ assertEquals("SpanNotS1NotS2_0_8", 0, spanCount("s1", "s2", 0, 8));
+
+ //exclude doesn't exist
+ assertEquals("SpanNotS1NotS3_8_8", 3, spanCount("s1", "s3", 8, 8));
+
+ //include doesn't exist
+ assertEquals("SpanNotS3NotS1_8_8", 0, spanCount("s3", "s1", 8, 8));
+
+ }
+
+ private int spanCount(String include, String exclude, int pre, int post) throws IOException{
+ SpanTermQuery iq = new SpanTermQuery(new Term(field, include));
+ SpanTermQuery eq = new SpanTermQuery(new Term(field, exclude));
+ SpanNotQuery snq = new SpanNotQuery(iq, eq, pre, post);
+ Spans spans = MultiSpansWrapper.wrap(searcher.getTopReaderContext(), snq);
+
+ int i = 0;
+ while (spans.next()){
+ i++;
+ }
+ return i;
+ }
+
}
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java Tue Aug 13 04:06:18 2013
@@ -84,25 +84,6 @@ public class TestBufferedIndexInput exte
public void testReadBytes() throws Exception {
MyBufferedIndexInput input = new MyBufferedIndexInput();
runReadBytes(input, BufferedIndexInput.BUFFER_SIZE, random());
-
- // This tests the workaround code for LUCENE-1566 where readBytesInternal
- // provides a workaround for a JVM Bug that incorrectly raises a OOM Error
- // when a large byte buffer is passed to a file read.
- // NOTE: this does only test the chunked reads and NOT if the Bug is triggered.
- //final int tmpFileSize = 1024 * 1024 * 5;
- final int inputBufferSize = 128;
- File tmpInputFile = _TestUtil.createTempFile("IndexInput", "tmpFile", TEMP_DIR);
- tmpInputFile.deleteOnExit();
- writeBytes(tmpInputFile, TEST_FILE_LENGTH);
-
- // run test with chunk size of 10 bytes
- runReadBytesAndClose(new SimpleFSIndexInput("SimpleFSIndexInput(path=\"" + tmpInputFile + "\")",
- new RandomAccessFile(tmpInputFile, "r"), newIOContext(random()), 10), inputBufferSize, random());
-
- // run test with chunk size of 10 bytes
- runReadBytesAndClose(new NIOFSIndexInput("NIOFSIndexInput(path=\"" + tmpInputFile + "\")",
- FileChannel.open(tmpInputFile.toPath(), StandardOpenOption.READ), newIOContext(random()), 10),
- inputBufferSize, random());
}
private void runReadBytesAndClose(IndexInput input, int bufferSize, Random r) throws IOException {
@@ -211,6 +192,7 @@ public class TestBufferedIndexInput exte
private static byte byten(long n){
return (byte)(n*n%256);
}
+
private static class MyBufferedIndexInput extends BufferedIndexInput {
private long pos;
private long len;
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/store/TestDirectory.java Tue Aug 13 04:06:18 2013
@@ -134,52 +134,66 @@ public class TestDirectory extends Lucen
// Test that different instances of FSDirectory can coexist on the same
// path, can read, write, and lock files.
public void testDirectInstantiation() throws Exception {
- File path = _TestUtil.getTempDir("testDirectInstantiation");
-
- int sz = 3;
- Directory[] dirs = new Directory[sz];
+ final File path = _TestUtil.getTempDir("testDirectInstantiation");
+
+ final byte[] largeBuffer = new byte[random().nextInt(256*1024)], largeReadBuffer = new byte[largeBuffer.length];
+ for (int i = 0; i < largeBuffer.length; i++) {
+ largeBuffer[i] = (byte) i; // automatically loops with modulo
+ }
- dirs[0] = new SimpleFSDirectory(path, null);
- dirs[1] = new NIOFSDirectory(path, null);
- dirs[2] = new MMapDirectory(path, null);
+ final FSDirectory[] dirs = new FSDirectory[] {
+ new SimpleFSDirectory(path, null),
+ new NIOFSDirectory(path, null),
+ new MMapDirectory(path, null)
+ };
- for (int i=0; i<sz; i++) {
- Directory dir = dirs[i];
+ for (int i=0; i<dirs.length; i++) {
+ FSDirectory dir = dirs[i];
dir.ensureOpen();
String fname = "foo." + i;
String lockname = "foo" + i + ".lck";
IndexOutput out = dir.createOutput(fname, newIOContext(random()));
out.writeByte((byte)i);
+ out.writeBytes(largeBuffer, largeBuffer.length);
out.close();
- for (int j=0; j<sz; j++) {
- Directory d2 = dirs[j];
+ for (int j=0; j<dirs.length; j++) {
+ FSDirectory d2 = dirs[j];
d2.ensureOpen();
assertTrue(d2.fileExists(fname));
- assertEquals(1, d2.fileLength(fname));
+ assertEquals(1 + largeBuffer.length, d2.fileLength(fname));
- // don't test read on MMapDirectory, since it can't really be
- // closed and will cause a failure to delete the file.
- if (d2 instanceof MMapDirectory) continue;
+ // don't do read tests if unmapping is not supported!
+ if (d2 instanceof MMapDirectory && !((MMapDirectory) d2).getUseUnmap())
+ continue;
IndexInput input = d2.openInput(fname, newIOContext(random()));
assertEquals((byte)i, input.readByte());
+ // read array with buffering enabled
+ Arrays.fill(largeReadBuffer, (byte)0);
+ input.readBytes(largeReadBuffer, 0, largeReadBuffer.length, true);
+ assertArrayEquals(largeBuffer, largeReadBuffer);
+ // read again without using buffer
+ input.seek(1L);
+ Arrays.fill(largeReadBuffer, (byte)0);
+ input.readBytes(largeReadBuffer, 0, largeReadBuffer.length, false);
+ assertArrayEquals(largeBuffer, largeReadBuffer);
input.close();
}
// delete with a different dir
- dirs[(i+1)%sz].deleteFile(fname);
+ dirs[(i+1)%dirs.length].deleteFile(fname);
- for (int j=0; j<sz; j++) {
- Directory d2 = dirs[j];
+ for (int j=0; j<dirs.length; j++) {
+ FSDirectory d2 = dirs[j];
assertFalse(d2.fileExists(fname));
}
Lock lock = dir.makeLock(lockname);
assertTrue(lock.obtain());
- for (int j=0; j<sz; j++) {
- Directory d2 = dirs[j];
+ for (int j=0; j<dirs.length; j++) {
+ FSDirectory d2 = dirs[j];
Lock lock2 = d2.makeLock(lockname);
try {
assertFalse(lock2.obtain(1));
@@ -191,13 +205,13 @@ public class TestDirectory extends Lucen
lock.release();
// now lock with different dir
- lock = dirs[(i+1)%sz].makeLock(lockname);
+ lock = dirs[(i+1)%dirs.length].makeLock(lockname);
assertTrue(lock.obtain());
lock.release();
}
- for (int i=0; i<sz; i++) {
- Directory dir = dirs[i];
+ for (int i=0; i<dirs.length; i++) {
+ FSDirectory dir = dirs[i];
dir.ensureOpen();
dir.close();
assertFalse(dir.isOpen);
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java Tue Aug 13 04:06:18 2013
@@ -932,20 +932,15 @@ public class TestFSTs extends LuceneTest
}
}
- final boolean useCache = random().nextBoolean();
- if (VERBOSE) {
- System.out.println(" useCache=" + useCache);
- }
-
final TermsEnum.SeekStatus status;
if (nextID == null) {
- if (termsEnum.seekExact(new BytesRef(id), useCache)) {
+ if (termsEnum.seekExact(new BytesRef(id))) {
status = TermsEnum.SeekStatus.FOUND;
} else {
status = TermsEnum.SeekStatus.NOT_FOUND;
}
} else {
- status = termsEnum.seekCeil(new BytesRef(id), useCache);
+ status = termsEnum.seekCeil(new BytesRef(id));
}
if (nextID != null) {
Modified: lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/test/org/apache/lucene/util/packed/TestPackedInts.java Tue Aug 13 04:06:18 2013
@@ -540,6 +540,28 @@ public class TestPackedInts extends Luce
}
}
+ public void testPackedIntsNull() {
+ // must be > 10 for the bulk reads below
+ int size = _TestUtil.nextInt(random(), 11, 256);
+ Reader packedInts = new PackedInts.NullReader(size);
+ assertEquals(0, packedInts.get(_TestUtil.nextInt(random(), 0, size - 1)));
+ long[] arr = new long[size + 10];
+ int r;
+ Arrays.fill(arr, 1);
+ r = packedInts.get(0, arr, 0, size - 1);
+ assertEquals(size - 1, r);
+ for (r--; r >= 0; r--) {
+ assertEquals(0, arr[r]);
+ }
+ Arrays.fill(arr, 1);
+ r = packedInts.get(10, arr, 0, size + 10);
+ assertEquals(size - 10, r);
+ for (int i = 0; i < size - 10; i++) {
+ assertEquals(0, arr[i]);
+ }
+
+ }
+
public void testBulkGet() {
final int valueCount = 1111;
final int index = random().nextInt(valueCount);
@@ -669,8 +691,8 @@ public class TestPackedInts extends Luce
PagedGrowableWriter writer = new PagedGrowableWriter(0, pageSize, _TestUtil.nextInt(random(), 1, 64), random().nextFloat());
assertEquals(0, writer.size());
- // compare against AppendingLongBuffer
- AppendingLongBuffer buf = new AppendingLongBuffer();
+ // compare against AppendingDeltaPackedLongBuffer
+ AppendingDeltaPackedLongBuffer buf = new AppendingDeltaPackedLongBuffer();
int size = random().nextInt(1000000);
long max = 5;
for (int i = 0; i < size; ++i) {
@@ -720,8 +742,8 @@ public class TestPackedInts extends Luce
PagedMutable writer = new PagedMutable(0, pageSize, bitsPerValue, random().nextFloat() / 2);
assertEquals(0, writer.size());
- // compare against AppendingLongBuffer
- AppendingLongBuffer buf = new AppendingLongBuffer();
+ // compare against AppendingDeltaPackedLongBuffer
+ AppendingDeltaPackedLongBuffer buf = new AppendingDeltaPackedLongBuffer();
int size = random().nextInt(1000000);
for (int i = 0; i < size; ++i) {
@@ -924,25 +946,46 @@ public class TestPackedInts extends Luce
return true;
}
+ enum DataType {
+ PACKED,
+ DELTA_PACKED,
+ MONOTONIC
+ }
+
+
public void testAppendingLongBuffer() {
+
final long[] arr = new long[RandomInts.randomIntBetween(random(), 1, 1000000)];
- for (int bpv : new int[] {0, 1, 63, 64, RandomInts.randomIntBetween(random(), 2, 62)}) {
- for (boolean monotonic : new boolean[] {true, false}) {
+ float[] ratioOptions = new float[]{PackedInts.DEFAULT, PackedInts.COMPACT, PackedInts.FAST};
+ for (int bpv : new int[]{0, 1, 63, 64, RandomInts.randomIntBetween(random(), 2, 62)}) {
+ for (DataType dataType : DataType.values()) {
final int pageSize = 1 << _TestUtil.nextInt(random(), 6, 20);
final int initialPageCount = _TestUtil.nextInt(random(), 0, 16);
+ float acceptableOverheadRatio = ratioOptions[_TestUtil.nextInt(random(), 0, ratioOptions.length - 1)];
AbstractAppendingLongBuffer buf;
final int inc;
- if (monotonic) {
- buf = new MonotonicAppendingLongBuffer(initialPageCount, pageSize);
- inc = _TestUtil.nextInt(random(), -1000, 1000);
- } else {
- buf = new AppendingLongBuffer(initialPageCount, pageSize);
- inc = 0;
+ switch (dataType) {
+ case PACKED:
+ buf = new AppendingPackedLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = 0;
+ break;
+ case DELTA_PACKED:
+ buf = new AppendingDeltaPackedLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = 0;
+ break;
+ case MONOTONIC:
+ buf = new MonotonicAppendingLongBuffer(initialPageCount, pageSize, acceptableOverheadRatio);
+ inc = _TestUtil.nextInt(random(), -1000, 1000);
+ break;
+ default:
+ throw new RuntimeException("added a type and forgot to add it here?");
+
}
+
if (bpv == 0) {
arr[0] = random().nextLong();
for (int i = 1; i < arr.length; ++i) {
- arr[i] = arr[i-1] + inc;
+ arr[i] = arr[i - 1] + inc;
}
} else if (bpv == 64) {
for (int i = 0; i < arr.length; ++i) {
@@ -954,6 +997,7 @@ public class TestPackedInts extends Luce
arr[i] = minValue + inc * i + random().nextLong() & PackedInts.maxValue(bpv); // _TestUtil.nextLong is too slow
}
}
+
for (int i = 0; i < arr.length; ++i) {
buf.add(arr[i]);
}
@@ -966,6 +1010,11 @@ public class TestPackedInts extends Luce
}
}
assertEquals(arr.length, buf.size());
+
+ for (int i = 0; i < arr.length; ++i) {
+ assertEquals(arr[i], buf.get(i));
+ }
+
final AbstractAppendingLongBuffer.Iterator it = buf.iterator();
for (int i = 0; i < arr.length; ++i) {
if (random().nextBoolean()) {
@@ -974,11 +1023,27 @@ public class TestPackedInts extends Luce
assertEquals(arr[i], it.next());
}
assertFalse(it.hasNext());
-
- for (int i = 0; i < arr.length; ++i) {
- assertEquals(arr[i], buf.get(i));
+
+
+ long[] target = new long[arr.length + 1024]; // check the request for more is OK.
+ for (int i = 0; i < arr.length; i += _TestUtil.nextInt(random(), 0, 10000)) {
+ int lenToRead = random().nextInt(buf.pageSize() * 2) + 1;
+ lenToRead = Math.min(lenToRead, target.length - i);
+ int lenToCheck = Math.min(lenToRead, arr.length - i);
+ int off = i;
+ while (off < arr.length && lenToRead > 0) {
+ int read = buf.get(off, target, off, lenToRead);
+ assertTrue(read > 0);
+ assertTrue(read <= lenToRead);
+ lenToRead -= read;
+ off += read;
+ }
+
+ for (int j = 0; j < lenToCheck; j++) {
+ assertEquals(arr[j + i], target[j + i]);
+ }
}
-
+
final long expectedBytesUsed = RamUsageEstimator.sizeOf(buf);
final long computedBytesUsed = buf.ramBytesUsed();
assertEquals(expectedBytesUsed, computedBytesUsed);
Modified: lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java (original)
+++ lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java Tue Aug 13 04:06:18 2013
@@ -1,27 +1,20 @@
package org.apache.lucene.demo.facet;
import java.io.IOException;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
import org.apache.lucene.document.Document;
-import org.apache.lucene.facet.associations.AssociationFloatSumFacetRequest;
-import org.apache.lucene.facet.associations.AssociationIntSumFacetRequest;
import org.apache.lucene.facet.associations.AssociationsFacetFields;
import org.apache.lucene.facet.associations.CategoryAssociation;
import org.apache.lucene.facet.associations.CategoryAssociationsContainer;
import org.apache.lucene.facet.associations.CategoryFloatAssociation;
import org.apache.lucene.facet.associations.CategoryIntAssociation;
-import org.apache.lucene.facet.associations.MultiAssociationsFacetsAggregator;
-import org.apache.lucene.facet.associations.SumFloatAssociationFacetsAggregator;
-import org.apache.lucene.facet.associations.SumIntAssociationFacetsAggregator;
+import org.apache.lucene.facet.associations.SumFloatAssociationFacetRequest;
+import org.apache.lucene.facet.associations.SumIntAssociationFacetRequest;
import org.apache.lucene.facet.index.FacetFields;
import org.apache.lucene.facet.params.FacetSearchParams;
import org.apache.lucene.facet.search.FacetResult;
-import org.apache.lucene.facet.search.FacetsAccumulator;
-import org.apache.lucene.facet.search.FacetsAggregator;
import org.apache.lucene.facet.search.FacetsCollector;
import org.apache.lucene.facet.taxonomy.CategoryPath;
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
@@ -135,22 +128,9 @@ public class AssociationsFacetsExample {
CategoryPath tags = new CategoryPath("tags");
CategoryPath genre = new CategoryPath("genre");
- FacetSearchParams fsp = new FacetSearchParams(
- new AssociationIntSumFacetRequest(tags, 10),
- new AssociationFloatSumFacetRequest(genre, 10));
-
- // every category has a different type of association, so use chain their
- // respective aggregators.
- final Map<CategoryPath,FacetsAggregator> aggregators = new HashMap<CategoryPath,FacetsAggregator>();
- aggregators.put(tags, new SumIntAssociationFacetsAggregator());
- aggregators.put(genre, new SumFloatAssociationFacetsAggregator());
- FacetsAccumulator fa = new FacetsAccumulator(fsp, indexReader, taxoReader) {
- @Override
- public FacetsAggregator getAggregator() {
- return new MultiAssociationsFacetsAggregator(aggregators);
- }
- };
- FacetsCollector fc = FacetsCollector.create(fa);
+ FacetSearchParams fsp = new FacetSearchParams(new SumIntAssociationFacetRequest(tags, 10),
+ new SumFloatAssociationFacetRequest(genre, 10));
+ FacetsCollector fc = FacetsCollector.create(fsp, indexReader, taxoReader);
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
Modified: lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java (original)
+++ lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java Tue Aug 13 04:06:18 2013
@@ -27,7 +27,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.facet.params.FacetIndexingParams;
-import org.apache.lucene.facet.params.FacetSearchParams;
import org.apache.lucene.facet.range.LongRange;
import org.apache.lucene.facet.range.RangeAccumulator;
import org.apache.lucene.facet.range.RangeFacetRequest;
@@ -80,13 +79,12 @@ public class RangeFacetsExample implemen
/** User runs a query and counts facets. */
public List<FacetResult> search() throws IOException {
- FacetSearchParams fsp = new FacetSearchParams(
- new RangeFacetRequest<LongRange>("timestamp",
- new LongRange("Past hour", nowSec-3600, true, nowSec, true),
- new LongRange("Past six hours", nowSec-6*3600, true, nowSec, true),
- new LongRange("Past day", nowSec-24*3600, true, nowSec, true)));
+ RangeFacetRequest<LongRange> rangeFacetRequest = new RangeFacetRequest<LongRange>("timestamp",
+ new LongRange("Past hour", nowSec-3600, true, nowSec, true),
+ new LongRange("Past six hours", nowSec-6*3600, true, nowSec, true),
+ new LongRange("Past day", nowSec-24*3600, true, nowSec, true));
// Aggregatses the facet counts
- FacetsCollector fc = FacetsCollector.create(new RangeAccumulator(fsp, searcher.getIndexReader()));
+ FacetsCollector fc = FacetsCollector.create(new RangeAccumulator(rangeFacetRequest));
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
@@ -112,6 +110,7 @@ public class RangeFacetsExample implemen
return searcher.search(q, 10);
}
+ @Override
public void close() throws IOException {
searcher.getIndexReader().close();
indexDir.close();
Modified: lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java (original)
+++ lucene/dev/branches/lucene3069/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleSortedSetFacetsExample.java Tue Aug 13 04:06:18 2013
@@ -91,7 +91,7 @@ public class SimpleSortedSetFacetsExampl
new CountFacetRequest(new CategoryPath("Author"), 10));
// Aggregatses the facet counts
- FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(fsp, state));
+ FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(state, fsp));
// MatchAllDocsQuery is for "browsing" (counts facets
// for all non-deleted docs in the index); normally
@@ -117,7 +117,7 @@ public class SimpleSortedSetFacetsExampl
FacetSearchParams fsp = new FacetSearchParams(new CountFacetRequest(new CategoryPath("Author"), 10));
DrillDownQuery q = new DrillDownQuery(fsp.indexingParams, new MatchAllDocsQuery());
q.add(new CategoryPath("Publish Year/2010", '/'));
- FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(fsp, state));
+ FacetsCollector fc = FacetsCollector.create(new SortedSetDocValuesAccumulator(state, fsp));
searcher.search(q, fc);
// Retrieve results
Modified: lucene/dev/branches/lucene3069/lucene/facet/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/build.xml?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/build.xml (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/build.xml Tue Aug 13 04:06:18 2013
@@ -23,9 +23,6 @@
Faceted indexing and search capabilities
</description>
- <!-- prettify.css/js -->
- <property name="rat.excludes" value="**/prettify.css,**/prettify.js"/>
-
<import file="../module-build.xml"/>
<target name="run-encoding-benchmark" depends="compile-test">
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/FacetPackage.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/FacetPackage.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/FacetPackage.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/FacetPackage.java Tue Aug 13 04:06:18 2013
@@ -17,11 +17,7 @@ package org.apache.lucene.facet;
* limitations under the License.
*/
-/**
- * Required so that userguide files are copied as part of javadocs generation.
- * Otherwise, if the root facet package contains no classes, doc-files aren't
- * copied.
- */
+/** Required for javadocs generation. */
public final class FacetPackage {
private FacetPackage() {}
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsListBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsListBuilder.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsListBuilder.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/AssociationsListBuilder.java Tue Aug 13 04:06:18 2013
@@ -54,13 +54,6 @@ public class AssociationsListBuilder imp
// build per-association key BytesRef
CategoryAssociation association = associations.getAssociation(cp);
- if (association == null) {
- // it is ok to set a null association for a category - it's treated as a
- // regular category in that case.
- ++idx;
- continue;
- }
-
BytesRef bytes = res.get(association.getCategoryListID());
if (bytes == null) {
bytes = new BytesRef(32);
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/CategoryAssociationsContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/CategoryAssociationsContainer.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/CategoryAssociationsContainer.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/CategoryAssociationsContainer.java Tue Aug 13 04:06:18 2013
@@ -30,11 +30,12 @@ public class CategoryAssociationsContain
/**
* Adds the {@link CategoryAssociation} for the given {@link CategoryPath
- * category}. Overrides any assocation that was previously set. It is ok to
- * pass {@code null}, in which case the category will be treated as a regular
- * one (i.e. without association value).
+ * category}. Overrides any assocation that was previously set.
*/
public void setAssociation(CategoryPath category, CategoryAssociation association) {
+ if (association == null) {
+ throw new IllegalArgumentException("cannot set a null association to a category");
+ }
categoryAssociations.put(category, association);
}
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumFloatAssociationFacetsAggregator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumFloatAssociationFacetsAggregator.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumFloatAssociationFacetsAggregator.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumFloatAssociationFacetsAggregator.java Tue Aug 13 04:06:18 2013
@@ -7,6 +7,8 @@ import org.apache.lucene.facet.search.Fa
import org.apache.lucene.facet.search.FacetRequest;
import org.apache.lucene.facet.search.FacetsAggregator;
import org.apache.lucene.facet.search.FacetsCollector.MatchingDocs;
+import org.apache.lucene.facet.search.OrdinalValueResolver;
+import org.apache.lucene.facet.search.OrdinalValueResolver.FloatValueResolver;
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.util.BytesRef;
@@ -54,23 +56,20 @@ public class SumFloatAssociationFacetsAg
int doc = 0;
while (doc < length && (doc = matchingDocs.bits.nextSetBit(doc)) != -1) {
dv.get(doc, bytes);
- if (bytes.length == 0) {
- continue; // no associations for this document
+ if (bytes.length > 0) {
+ // aggreate float association values for ordinals
+ int bytesUpto = bytes.offset + bytes.length;
+ int pos = bytes.offset;
+ while (pos < bytesUpto) {
+ int ordinal = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
+ | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
+
+ int value = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
+ | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
+
+ values[ordinal] += Float.intBitsToFloat(value);
+ }
}
-
- // aggreate float association values for ordinals
- int bytesUpto = bytes.offset + bytes.length;
- int pos = bytes.offset;
- while (pos < bytesUpto) {
- int ordinal = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
- | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
-
- int value = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
- | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
-
- values[ordinal] += Float.intBitsToFloat(value);
- }
-
++doc;
}
}
@@ -84,5 +83,10 @@ public class SumFloatAssociationFacetsAg
public void rollupValues(FacetRequest fr, int ordinal, int[] children, int[] siblings, FacetArrays facetArrays) {
// NO-OP: this aggregator does no rollup values to the parents.
}
+
+ @Override
+ public OrdinalValueResolver createOrdinalValueResolver(FacetRequest facetRequest, FacetArrays arrays) {
+ return new FloatValueResolver(arrays);
+ }
}
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumIntAssociationFacetsAggregator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumIntAssociationFacetsAggregator.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumIntAssociationFacetsAggregator.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/associations/SumIntAssociationFacetsAggregator.java Tue Aug 13 04:06:18 2013
@@ -7,6 +7,8 @@ import org.apache.lucene.facet.search.Fa
import org.apache.lucene.facet.search.FacetRequest;
import org.apache.lucene.facet.search.FacetsAggregator;
import org.apache.lucene.facet.search.FacetsCollector.MatchingDocs;
+import org.apache.lucene.facet.search.OrdinalValueResolver;
+import org.apache.lucene.facet.search.OrdinalValueResolver.IntValueResolver;
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.util.BytesRef;
@@ -53,23 +55,20 @@ public class SumIntAssociationFacetsAggr
int doc = 0;
while (doc < length && (doc = matchingDocs.bits.nextSetBit(doc)) != -1) {
dv.get(doc, bytes);
- if (bytes.length == 0) {
- continue; // no associations for this document
+ if (bytes.length > 0) {
+ // aggreate association values for ordinals
+ int bytesUpto = bytes.offset + bytes.length;
+ int pos = bytes.offset;
+ while (pos < bytesUpto) {
+ int ordinal = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
+ | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
+
+ int value = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
+ | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
+
+ values[ordinal] += value;
+ }
}
-
- // aggreate association values for ordinals
- int bytesUpto = bytes.offset + bytes.length;
- int pos = bytes.offset;
- while (pos < bytesUpto) {
- int ordinal = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
- | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
-
- int value = ((bytes.bytes[pos++] & 0xFF) << 24) | ((bytes.bytes[pos++] & 0xFF) << 16)
- | ((bytes.bytes[pos++] & 0xFF) << 8) | (bytes.bytes[pos++] & 0xFF);
-
- values[ordinal] += value;
- }
-
++doc;
}
}
@@ -84,4 +83,9 @@ public class SumIntAssociationFacetsAggr
// NO-OP: this aggregator does no rollup values to the parents.
}
+ @Override
+ public OrdinalValueResolver createOrdinalValueResolver(FacetRequest facetRequest, FacetArrays arrays) {
+ return new IntValueResolver(arrays);
+ }
+
}
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/codecs/facet42/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/codecs/facet42/package.html?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/codecs/facet42/package.html (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/codecs/facet42/package.html Tue Aug 13 04:06:18 2013
@@ -16,9 +16,6 @@
limitations under the License.
-->
<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
<body>
Codec + DocValuesFormat that are optimized for facets.
</body>
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/complements/TotalFacetCounts.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/complements/TotalFacetCounts.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/complements/TotalFacetCounts.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/complements/TotalFacetCounts.java Tue Aug 13 04:06:18 2013
@@ -11,20 +11,20 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.lucene.facet.old.Aggregator;
+import org.apache.lucene.facet.old.CountingAggregator;
+import org.apache.lucene.facet.old.OldFacetsAccumulator;
+import org.apache.lucene.facet.old.ScoredDocIdsUtils;
import org.apache.lucene.facet.params.CategoryListParams;
import org.apache.lucene.facet.params.FacetIndexingParams;
import org.apache.lucene.facet.params.FacetSearchParams;
-import org.apache.lucene.facet.search.Aggregator;
import org.apache.lucene.facet.search.CategoryListIterator;
import org.apache.lucene.facet.search.CountFacetRequest;
-import org.apache.lucene.facet.search.CountingAggregator;
import org.apache.lucene.facet.search.FacetArrays;
import org.apache.lucene.facet.search.FacetRequest;
-import org.apache.lucene.facet.search.StandardFacetsAccumulator;
import org.apache.lucene.facet.taxonomy.CategoryPath;
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
import org.apache.lucene.facet.util.PartitionsUtils;
-import org.apache.lucene.facet.util.ScoredDocIdsUtils;
import org.apache.lucene.index.IndexReader;
/*
@@ -159,7 +159,7 @@ public class TotalFacetCounts {
final int[][] counts = new int[(int) Math.ceil(taxonomy.getSize() /(float) partitionSize)][partitionSize];
FacetSearchParams newSearchParams = new FacetSearchParams(facetIndexingParams, DUMMY_REQ);
//createAllListsSearchParams(facetIndexingParams, this.totalCounts);
- StandardFacetsAccumulator sfa = new StandardFacetsAccumulator(newSearchParams, indexReader, taxonomy) {
+ OldFacetsAccumulator sfa = new OldFacetsAccumulator(newSearchParams, indexReader, taxonomy) {
@Override
protected HashMap<CategoryListIterator, Aggregator> getCategoryListMap(
FacetArrays facetArrays, int partition) throws IOException {
@@ -172,7 +172,7 @@ public class TotalFacetCounts {
return map;
}
};
- sfa.setComplementThreshold(StandardFacetsAccumulator.DISABLE_COMPLEMENT);
+ sfa.setComplementThreshold(OldFacetsAccumulator.DISABLE_COMPLEMENT);
sfa.accumulate(ScoredDocIdsUtils.createAllDocsScoredDocIDs(indexReader));
return new TotalFacetCounts(taxonomy, facetIndexingParams, counts, CreationType.Computed);
}
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/index/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/index/package.html?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/index/package.html (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/index/package.html Tue Aug 13 04:06:18 2013
@@ -20,6 +20,5 @@
</head>
<body>
Facets indexing code.
-
</body>
</html>
\ No newline at end of file
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java Tue Aug 13 04:06:18 2013
@@ -23,13 +23,9 @@ import org.apache.lucene.facet.search.Fa
*/
/**
- * Defines parameters that are needed for faceted search. The list of
- * {@link FacetRequest facet requests} denotes the facets for which aggregated
- * should be done.
- * <p>
- * One can pass {@link FacetIndexingParams} in order to tell the search code how
- * to read the facets information. Note that you must use the same
- * {@link FacetIndexingParams} that were used for indexing.
+ * Defines parameters that are needed for faceted search: the list of facet
+ * {@link FacetRequest facet requests} which should be aggregated as well as the
+ * {@link FacetIndexingParams indexing params} that were used to index them.
*
* @lucene.experimental
*/
Modified: lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/partitions/PartitionsFacetResultsHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/partitions/PartitionsFacetResultsHandler.java?rev=1513336&r1=1513335&r2=1513336&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/partitions/PartitionsFacetResultsHandler.java (original)
+++ lucene/dev/branches/lucene3069/lucene/facet/src/java/org/apache/lucene/facet/partitions/PartitionsFacetResultsHandler.java Tue Aug 13 04:06:18 2013
@@ -2,13 +2,14 @@ package org.apache.lucene.facet.partitio
import java.io.IOException;
+import org.apache.lucene.facet.old.OldFacetsAccumulator;
+import org.apache.lucene.facet.old.ScoredDocIDs;
import org.apache.lucene.facet.search.FacetArrays;
import org.apache.lucene.facet.search.FacetRequest;
import org.apache.lucene.facet.search.FacetResult;
import org.apache.lucene.facet.search.FacetResultNode;
import org.apache.lucene.facet.search.FacetResultsHandler;
-import org.apache.lucene.facet.search.ScoredDocIDs;
-import org.apache.lucene.facet.search.StandardFacetsAccumulator;
+import org.apache.lucene.facet.search.OrdinalValueResolver;
import org.apache.lucene.facet.taxonomy.TaxonomyReader;
/*
@@ -36,11 +37,10 @@ import org.apache.lucene.facet.taxonomy.
public abstract class PartitionsFacetResultsHandler extends FacetResultsHandler {
public PartitionsFacetResultsHandler(TaxonomyReader taxonomyReader, FacetRequest facetRequest,
- FacetArrays facetArrays) {
- super(taxonomyReader, facetRequest, facetArrays);
+ OrdinalValueResolver resolver, FacetArrays facetArrays) {
+ super(taxonomyReader, facetRequest, resolver, facetArrays);
}
-
/**
* Fetch results of a single partition, given facet arrays for that partition,
* and based on the matching documents and faceted search parameters.
@@ -103,7 +103,7 @@ public abstract class PartitionsFacetRes
/**
* Label results according to settings in {@link FacetRequest}, such as
* {@link FacetRequest#getNumLabel()}. Usually invoked by
- * {@link StandardFacetsAccumulator#accumulate(ScoredDocIDs)}
+ * {@link OldFacetsAccumulator#accumulate(ScoredDocIDs)}
*
* @param facetResult
* facet result to be labeled.