You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/11/27 12:34:48 UTC

svn commit: r1642110 [4/12] - in /lucene/dev/branches/lucene6005/lucene: analysis/uima/src/test/org/apache/lucene/analysis/uima/ backward-codecs/src/test/org/apache/lucene/index/ benchmark/src/java/org/apache/lucene/benchmark/byTask/feeds/ benchmark/sr...

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestOmitPositions.java Thu Nov 27 11:34:43 2014
@@ -19,9 +19,11 @@ package org.apache.lucene.index;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
@@ -39,11 +41,12 @@ public class TestOmitPositions extends L
   public void testBasic() throws Exception {   
     Directory dir = newDirectory();
     RandomIndexWriter w = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
-    ft.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
-    Field f = newField("foo", "this is a test test", ft);
-    doc.add(f);
+    FieldTypes fieldTypes = w.getFieldTypes();
+    fieldTypes.disableHighlighting("foo");
+    fieldTypes.setIndexOptions("foo", IndexOptions.DOCS_AND_FREQS);
+
+    Document2 doc = w.newDocument();
+    doc.addLargeText("foo", "this is a test test");
     for (int i = 0; i < 100; i++) {
       w.addDocument(doc);
     }
@@ -61,210 +64,4 @@ public class TestOmitPositions extends L
     reader.close();
     dir.close();
   }
-  
-  // Tests whether the DocumentWriter correctly enable the
-  // omitTermFreqAndPositions bit in the FieldInfo
-  public void testPositions() throws Exception {
-    Directory ram = newDirectory();
-    Analyzer analyzer = new MockAnalyzer(random());
-    IndexWriter writer = new IndexWriter(ram, newIndexWriterConfig(analyzer));
-    Document d = new Document();
-        
-    // f1,f2,f3: docs only
-    FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
-    ft.setIndexOptions(IndexOptions.DOCS);
-    
-    Field f1 = newField("f1", "This field has docs only", ft);
-    d.add(f1);
-       
-    Field f2 = newField("f2", "This field has docs only", ft);
-    d.add(f2);
-    
-    Field f3 = newField("f3", "This field has docs only", ft);
-    d.add(f3);
-
-    FieldType ft2 = new FieldType(TextField.TYPE_NOT_STORED);
-    ft2.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
-    
-    // f4,f5,f6 docs and freqs
-    Field f4 = newField("f4", "This field has docs and freqs", ft2);
-    d.add(f4);
-       
-    Field f5 = newField("f5", "This field has docs and freqs", ft2);
-    d.add(f5);
-    
-    Field f6 = newField("f6", "This field has docs and freqs", ft2);
-    d.add(f6);
-    
-    FieldType ft3 = new FieldType(TextField.TYPE_NOT_STORED);
-    ft3.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
-    
-    // f7,f8,f9 docs/freqs/positions
-    Field f7 = newField("f7", "This field has docs and freqs and positions", ft3);
-    d.add(f7);
-       
-    Field f8 = newField("f8", "This field has docs and freqs and positions", ft3);
-    d.add(f8);
-    
-    Field f9 = newField("f9", "This field has docs and freqs and positions", ft3);
-    d.add(f9);
-        
-    writer.addDocument(d);
-    writer.forceMerge(1);
-
-    // now we add another document which has docs-only for f1, f4, f7, docs/freqs for f2, f5, f8, 
-    // and docs/freqs/positions for f3, f6, f9
-    d = new Document();
-    
-    // f1,f4,f7: docs only
-    f1 = newField("f1", "This field has docs only", ft);
-    d.add(f1);
-    
-    f4 = newField("f4", "This field has docs only", ft);
-    d.add(f4);
-    
-    f7 = newField("f7", "This field has docs only", ft);
-    d.add(f7);
-
-    // f2, f5, f8: docs and freqs
-    f2 = newField("f2", "This field has docs and freqs", ft2);
-    d.add(f2);
-    
-    f5 = newField("f5", "This field has docs and freqs", ft2);
-    d.add(f5);
-    
-    f8 = newField("f8", "This field has docs and freqs", ft2);
-    d.add(f8);
-    
-    // f3, f6, f9: docs and freqs and positions
-    f3 = newField("f3", "This field has docs and freqs and positions", ft3);
-    d.add(f3);     
-    
-    f6 = newField("f6", "This field has docs and freqs and positions", ft3);
-    d.add(f6);
-    
-    f9 = newField("f9", "This field has docs and freqs and positions", ft3);
-    d.add(f9);
-        
-    writer.addDocument(d);
-
-    // force merge
-    writer.forceMerge(1);
-    // flush
-    writer.close();
-
-    SegmentReader reader = getOnlySegmentReader(DirectoryReader.open(ram));
-    FieldInfos fi = reader.getFieldInfos();
-    // docs + docs = docs
-    assertEquals(IndexOptions.DOCS, fi.fieldInfo("f1").getIndexOptions());
-    // docs + docs/freqs = docs
-    assertEquals(IndexOptions.DOCS, fi.fieldInfo("f2").getIndexOptions());
-    // docs + docs/freqs/pos = docs
-    assertEquals(IndexOptions.DOCS, fi.fieldInfo("f3").getIndexOptions());
-    // docs/freqs + docs = docs
-    assertEquals(IndexOptions.DOCS, fi.fieldInfo("f4").getIndexOptions());
-    // docs/freqs + docs/freqs = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f5").getIndexOptions());
-    // docs/freqs + docs/freqs/pos = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f6").getIndexOptions());
-    // docs/freqs/pos + docs = docs
-    assertEquals(IndexOptions.DOCS, fi.fieldInfo("f7").getIndexOptions());
-    // docs/freqs/pos + docs/freqs = docs/freqs
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fi.fieldInfo("f8").getIndexOptions());
-    // docs/freqs/pos + docs/freqs/pos = docs/freqs/pos
-    assertEquals(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, fi.fieldInfo("f9").getIndexOptions());
-    
-    reader.close();
-    ram.close();
-  }
-  
-  private void assertNoPrx(Directory dir) throws Throwable {
-    final String[] files = dir.listAll();
-    for(int i=0;i<files.length;i++) {
-      assertFalse(files[i].endsWith(".prx"));
-      assertFalse(files[i].endsWith(".pos"));
-    }
-  }
-
-  // Verifies no *.prx exists when all fields omit term positions:
-  public void testNoPrxFile() throws Throwable {
-    Directory ram = newDirectory();
-    if (ram instanceof MockDirectoryWrapper) {
-      // we verify some files get deleted
-      ((MockDirectoryWrapper)ram).setEnableVirusScanner(false);
-    }
-    Analyzer analyzer = new MockAnalyzer(random());
-    IndexWriter writer = new IndexWriter(ram, newIndexWriterConfig(analyzer)
-                                                .setMaxBufferedDocs(3)
-                                                .setMergePolicy(newLogMergePolicy()));
-    LogMergePolicy lmp = (LogMergePolicy) writer.getConfig().getMergePolicy();
-    lmp.setMergeFactor(2);
-    lmp.setNoCFSRatio(0.0);
-    Document d = new Document();
-
-    FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
-    ft.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
-    Field f1 = newField("f1", "This field has term freqs", ft);
-    d.add(f1);
-
-    for(int i=0;i<30;i++)
-      writer.addDocument(d);
-
-    writer.commit();
-
-    assertNoPrx(ram);
-    
-    // now add some documents with positions, and check there is no prox after optimization
-    d = new Document();
-    f1 = newTextField("f1", "This field has positions", Field.Store.NO);
-    d.add(f1);
-    
-    for(int i=0;i<30;i++)
-      writer.addDocument(d);
-
-    // force merge
-    writer.forceMerge(1);
-    // flush
-    writer.close();
-
-    assertNoPrx(ram);
-    ram.close();
-  }
-  
-  /** make sure we downgrade positions and payloads correctly */
-  public void testMixing() throws Exception {
-    // no positions
-    FieldType ft = new FieldType(TextField.TYPE_NOT_STORED);
-    ft.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
-    
-    Directory dir = newDirectory();
-    RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
-    
-    for (int i = 0; i < 20; i++) {
-      Document doc = new Document();
-      if (i < 19 && random().nextBoolean()) {
-        for (int j = 0; j < 50; j++) {
-          doc.add(new TextField("foo", "i have positions", Field.Store.NO));
-        }
-      } else {
-        for (int j = 0; j < 50; j++) {
-          doc.add(new Field("foo", "i have no positions", ft));
-        }
-      }
-      iw.addDocument(doc);
-      iw.commit();
-    }
-    
-    if (random().nextBoolean()) {
-      iw.forceMerge(1);
-    }
-    
-    DirectoryReader ir = iw.getReader();
-    FieldInfos fis = MultiFields.getMergedFieldInfos(ir);
-    assertEquals(IndexOptions.DOCS_AND_FREQS, fis.fieldInfo("foo").getIndexOptions());
-    assertFalse(fis.fieldInfo("foo").hasPayloads());
-    iw.close();
-    ir.close();
-    dir.close(); // checkindex
-  }
 }

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloads.java Thu Nov 27 11:34:43 2014
@@ -32,6 +32,7 @@ import org.apache.lucene.analysis.tokena
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.search.DocIdSetIterator;
@@ -62,7 +63,11 @@ public class TestPayloads extends Lucene
     Directory ram = newDirectory();
     PayloadAnalyzer analyzer = new PayloadAnalyzer();
     IndexWriter writer = new IndexWriter(ram, newIndexWriterConfig(analyzer));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("f2");
+
     Document2 d = writer.newDocument();
+
     // this field won't have any payloads
     d.addLargeText("f1", "This field has no payloads");
     // this field will have payloads in all docs, however not for all term positions,
@@ -91,6 +96,8 @@ public class TestPayloads extends Lucene
     analyzer = new PayloadAnalyzer(); // Clear payload state for each field
     writer = new IndexWriter(ram, newIndexWriterConfig(analyzer)
                              .setOpenMode(OpenMode.CREATE));
+    fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("f2");
     d = writer.newDocument();
     d.addLargeText("f1", "This field has no payloads");
     d.addLargeText("f2", "This field has payloads in all docs");
@@ -607,6 +614,8 @@ public class TestPayloads extends Lucene
   public void testMixupMultiValued() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("field");
     Document2 doc = writer.newDocument();
     TokenStream ts = new MockTokenizer(MockTokenizer.WHITESPACE, true);
     ((Tokenizer)ts).setReader(new StringReader("here we go"));

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPayloadsOnVectors.java Thu Nov 27 11:34:43 2014
@@ -99,6 +99,7 @@ public class TestPayloadsOnVectors exten
     if (random().nextBoolean()) {
       fieldTypes.enableTermVectorOffsets("field");
     }
+    fieldTypes.setMultiValued("field");
     TokenStream ts = new MockTokenizer(MockTokenizer.WHITESPACE, true);
     ((Tokenizer)ts).setReader(new StringReader("here we go"));
     Document2 doc = writer.newDocument();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestPostingsOffsets.java Thu Nov 27 11:34:43 2014
@@ -35,7 +35,6 @@ import org.apache.lucene.document.Docume
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.FieldTypes;
-import org.apache.lucene.document.IntField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.StringField;
 import org.apache.lucene.document.TextField;
@@ -375,6 +374,7 @@ public class TestPostingsOffsets extends
     fieldTypes.enableTermVectors("content3");
     fieldTypes.enableTermVectorPositions("content3");
     fieldTypes.enableTermVectorOffsets("content3");
+    fieldTypes.setMultiValued("content3");
 
     Document2 doc = iw.newDocument();
     doc.addLargeText("content3", "here is more content with aaa aaa aaa");

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java Thu Nov 27 11:34:43 2014
@@ -44,8 +44,6 @@ public class TestRollingUpdates extends 
       ((MockDirectoryWrapper)dir).setEnableVirusScanner(false);
     }
     
-    final LineFileDocs docs = new LineFileDocs(random, true);
-
     //provider.register(new MemoryCodec());
     if (random().nextBoolean()) {
       Codec.setDefault(TestUtil.alwaysPostingsFormat(new MemoryPostingsFormat(random().nextBoolean(), random.nextFloat())));
@@ -66,7 +64,7 @@ public class TestRollingUpdates extends 
     int updateCount = 0;
     // TODO: sometimes update ids not in order...
     for(int docIter=0;docIter<numUpdates;docIter++) {
-      final Document doc = docs.nextDoc();
+      final Document2 doc = w.newDocument();
       final String myID = Integer.toString(id);
       if (id == SIZE-1) {
         id = 0;
@@ -76,7 +74,7 @@ public class TestRollingUpdates extends 
       if (VERBOSE) {
         System.out.println("  docIter=" + docIter + " id=" + id);
       }
-      ((Field) doc.getField("docid")).setStringValue(myID);
+      doc.addAtom("docid", myID);
 
       Term idTerm = new Term("docid", myID);
 
@@ -140,8 +138,6 @@ public class TestRollingUpdates extends 
 
     TestIndexWriter.assertNoUnreferencedFiles(dir, "leftover files after rolling updates");
 
-    docs.close();
-    
     // LUCENE-4455:
     SegmentInfos infos = SegmentInfos.readLatestCommit(dir);
     long totalBytes = 0;
@@ -162,10 +158,10 @@ public class TestRollingUpdates extends 
   public void testUpdateSameDoc() throws Exception {
     final Directory dir = newDirectory();
 
-    final LineFileDocs docs = new LineFileDocs(random());
     for (int r = 0; r < 3; r++) {
       final IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
                                                    .setMaxBufferedDocs(2));
+      final LineFileDocs docs = new LineFileDocs(w, random());
       final int numUpdates = atLeast(20);
       int numThreads = TestUtil.nextInt(random(), 2, 6);
       IndexingThread[] threads = new IndexingThread[numThreads];
@@ -179,12 +175,12 @@ public class TestRollingUpdates extends 
       }
 
       w.close();
+      docs.close();
     }
 
     IndexReader open = DirectoryReader.open(dir);
     assertEquals(1, open.numDocs());
     open.close();
-    docs.close();
     dir.close();
   }
   

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java Thu Nov 27 11:34:43 2014
@@ -31,6 +31,7 @@ import org.apache.lucene.document.Docume
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.LowSchemaField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.search.DocIdSetIterator;
@@ -75,7 +76,7 @@ public class TestStressIndexing2 extends
     // mergeFactor=2; maxBufferedDocs=2; Map docs = indexRandom(1, 3, 2, dir1);
     int maxThreadStates = 1+random().nextInt(10);
     boolean doReaderPooling = random().nextBoolean();
-    Map<String,Document> docs = indexRandom(5, 3, 100, dir1, maxThreadStates, doReaderPooling);
+    Map<String,List<LowSchemaField>> docs = indexRandom(5, 3, 100, dir1, maxThreadStates, doReaderPooling);
     indexSerial(random(), docs, dir2);
 
     // verifying verify
@@ -110,7 +111,7 @@ public class TestStressIndexing2 extends
       if (VERBOSE) {
         System.out.println("  nThreads=" + nThreads + " iter=" + iter + " range=" + range + " doPooling=" + doReaderPooling + " maxThreadStates=" + maxThreadStates + " sameFieldOrder=" + sameFieldOrder + " mergeFactor=" + mergeFactor + " maxBufferedDocs=" + maxBufferedDocs);
       }
-      Map<String,Document> docs = indexRandom(nThreads, iter, range, dir1, maxThreadStates, doReaderPooling);
+      Map<String,List<LowSchemaField>> docs = indexRandom(nThreads, iter, range, dir1, maxThreadStates, doReaderPooling);
       if (VERBOSE) {
         System.out.println("TEST: index serial");
       }
@@ -139,12 +140,12 @@ public class TestStressIndexing2 extends
   // everything.
   
   public static class DocsAndWriter {
-    Map<String,Document> docs;
+    Map<String,List<LowSchemaField>> docs;
     IndexWriter writer;
   }
   
   public DocsAndWriter indexRandomIWReader(int nThreads, int iterations, int range, Directory dir) throws IOException, InterruptedException {
-    Map<String,Document> docs = new HashMap<>();
+    Map<String,List<LowSchemaField>> docs = new HashMap<>();
     IndexWriter w = RandomIndexWriter.mockIndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
             .setOpenMode(OpenMode.CREATE)
             .setRAMBufferSizeMB(0.1)
@@ -195,9 +196,9 @@ public class TestStressIndexing2 extends
     return dw;
   }
   
-  public Map<String,Document> indexRandom(int nThreads, int iterations, int range, Directory dir, int maxThreadStates,
-                                          boolean doReaderPooling) throws IOException, InterruptedException {
-    Map<String,Document> docs = new HashMap<>();
+  public Map<String,List<LowSchemaField>> indexRandom(int nThreads, int iterations, int range, Directory dir, int maxThreadStates,
+                                                      boolean doReaderPooling) throws IOException, InterruptedException {
+    Map<String,List<LowSchemaField>> docs = new HashMap<>();
     IndexWriter w = RandomIndexWriter.mockIndexWriter(dir, newIndexWriterConfig(new MockAnalyzer(random()))
              .setOpenMode(OpenMode.CREATE)
              .setRAMBufferSizeMB(0.1)
@@ -243,23 +244,17 @@ public class TestStressIndexing2 extends
   }
 
   
-  public static void indexSerial(Random random, Map<String,Document> docs, Directory dir) throws IOException {
+  public static void indexSerial(Random random, Map<String,List<LowSchemaField>> docs, Directory dir) throws IOException {
     IndexWriter w = new IndexWriter(dir, LuceneTestCase.newIndexWriterConfig(random, new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
 
     // index all docs in a single thread
-    Iterator<Document> iter = docs.values().iterator();
+    Iterator<List<LowSchemaField>> iter = docs.values().iterator();
     while (iter.hasNext()) {
-      Document d = iter.next();
-      ArrayList<IndexableField> fields = new ArrayList<>();
-      fields.addAll(d.getFields());
+      List<LowSchemaField> d = iter.next();
+      List<LowSchemaField> fields = new ArrayList<>(d);
       // put fields in same order each time
       Collections.sort(fields, fieldNameComparator);
-      
-      Document d1 = new Document();
-      for (int i=0; i<fields.size(); i++) {
-        d1.add(fields.get(i));
-      }
-      w.addDocument(d1);
+      w.addDocument(fields);
       // System.out.println("indexing "+d1);
     }
     
@@ -694,7 +689,7 @@ public class TestStressIndexing2 extends
     int base;
     int range;
     int iterations;
-    Map<String,Document> docs = new HashMap<>();
+    Map<String,List<LowSchemaField>> docs = new HashMap<>();
     Random r;
 
     public int nextInt(int lim) {
@@ -765,19 +760,40 @@ public class TestStressIndexing2 extends
       return Integer.toString(base + nextInt(range));
     }
 
+    private void setTermVectors(LowSchemaField field, Map<String,LowSchemaField> prevFields) {
+      LowSchemaField prev = prevFields.get(field.name());
+      if (prev == null) {
+        // First time we see this field name in in this doc: randomize TV settings:
+        switch (nextInt(4)) {
+        case 0:
+          break;
+        case 1:
+          field.enableTermVectors(false, false, false);
+          break;
+        case 2:
+          field.enableTermVectors(true, false, false);
+          break;
+        case 3:
+          field.enableTermVectors(false, true, false);
+          break;
+        }
+        prevFields.put(field.name(), field);
+      } else {
+        field.enableTermVectors(prev.storeTermVectorPositions(),
+                                prev.storeTermVectorOffsets(),
+                                prev.storeTermVectorPayloads());
+      }
+    }
+
     public void indexDoc() throws IOException {
-      Document d = new Document();
 
-      FieldType customType1 = new FieldType(TextField.TYPE_STORED);
-      customType1.setTokenized(false);
-      customType1.setOmitNorms(true);
-      
-      ArrayList<Field> fields = new ArrayList<>();
+      List<LowSchemaField> fields = new ArrayList<>();
       String idString = getIdString();
-      Field idField =  newField("id", idString, customType1);
+      LowSchemaField idField = new LowSchemaField("id", idString, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, false);
+      idField.disableNorms();
       fields.add(idField);
 
-      Map<String,FieldType> tvTypes = new HashMap<>();
+      Map<String,LowSchemaField> prevField = new HashMap<>();
 
       int nFields = nextInt(maxFields);
       for (int i=0; i<nFields; i++) {
@@ -785,61 +801,26 @@ public class TestStressIndexing2 extends
         String fieldName = "f" + nextInt(100);
         FieldType customType;
 
-        // Use the same term vector settings if we already
-        // added this field to the doc:
-        FieldType oldTVType = tvTypes.get(fieldName);
-        if (oldTVType != null) {
-          customType = new FieldType(oldTVType);
-        } else {
-          customType = new FieldType();
-          switch (nextInt(4)) {
-          case 0:
-            break;
-          case 1:
-            customType.setStoreTermVectors(true);
-            break;
-          case 2:
-            customType.setStoreTermVectors(true);
-            customType.setStoreTermVectorPositions(true);
-            break;
-          case 3:
-            customType.setStoreTermVectors(true);
-            customType.setStoreTermVectorOffsets(true);
-            break;
-          }
-          FieldType newType = new FieldType(customType);
-          newType.freeze();
-          tvTypes.put(fieldName, newType);
-        }
+        LowSchemaField field;
         
         switch (nextInt(4)) {
           case 0:
-            customType.setStored(true);
-            customType.setOmitNorms(true);
-            customType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
-            customType.freeze();
-            fields.add(newField(fieldName, getString(1), customType));
+            field = new LowSchemaField(fieldName, getString(1), IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, true);
+            field.disableNorms();
+            setTermVectors(field, prevField);
             break;
           case 1:
-            customType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
-            customType.setTokenized(true);
-            customType.freeze();
-            fields.add(newField(fieldName, getString(0), customType));
+            field = new LowSchemaField(fieldName, getString(0), IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, true);
+            field.doNotStore();
+            setTermVectors(field, prevField);
             break;
           case 2:
-            customType.setStored(true);
-            customType.setStoreTermVectors(false);
-            customType.setStoreTermVectorOffsets(false);
-            customType.setStoreTermVectorPositions(false);
-            customType.freeze();
-            fields.add(newField(fieldName, getString(0), customType));
+            field = new LowSchemaField(fieldName, getString(0), IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, true);
+            // no term vectors
             break;
           case 3:
-            customType.setStored(true);
-            customType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
-            customType.setTokenized(true);
-            customType.freeze();
-            fields.add(newField(fieldName, getString(bigFieldSize), customType));
+            field = new LowSchemaField(fieldName, getString(0), IndexOptions.DOCS_AND_FREQS_AND_POSITIONS, true);
+            setTermVectors(field, prevField);
             break;
         }
       }
@@ -848,18 +829,15 @@ public class TestStressIndexing2 extends
         Collections.sort(fields, fieldNameComparator);
       } else {
         // random placement of id field also
-        Collections.swap(fields,nextInt(fields.size()), 0);
+        Collections.swap(fields, nextInt(fields.size()), 0);
       }
 
-      for (int i=0; i<fields.size(); i++) {
-        d.add(fields.get(i));
-      }
       if (VERBOSE) {
         System.out.println(Thread.currentThread().getName() + ": indexing id:" + idString);
       }
-      w.updateDocument(new Term("id", idString), d);
+      w.updateDocument(new Term("id", idString), fields);
       //System.out.println(Thread.currentThread().getName() + ": indexing "+d);
-      docs.put(idString, d);
+      docs.put(idString, fields);
     }
 
     public void deleteDoc() throws IOException {

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsWriter.java Thu Nov 27 11:34:43 2014
@@ -56,6 +56,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     doc.addAtom("field", "abcd");
     doc.addAtom("field", "abcd");
@@ -113,6 +114,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     doc.addLargeText("field", "abcd");
     doc.addLargeText("field", "abcd");
@@ -147,6 +149,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     doc.addLargeText("field", "abcd   ");
     doc.addLargeText("field", "abcd   ");
@@ -182,6 +185,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     try (TokenStream stream = analyzer.tokenStream("field", "abcd   ")) {
       stream.reset(); // TODO: weird to reset before wrapping with CachingTokenFilter... correct?
@@ -220,6 +224,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     doc.addLargeText("field", "abcd the");
     doc.addLargeText("field", "abcd the");
@@ -254,6 +259,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     Document2 doc = w.newDocument();
     doc.addLargeText("field", "abcd the  ");
     doc.addLargeText("field", "crunch man");
@@ -297,6 +303,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     doc.addLargeText("field", "");
     doc.addLargeText("field", "crunch man");
     w.addDocument(doc);
@@ -333,6 +340,7 @@ public class TestTermVectorsWriter exten
     fieldTypes.enableTermVectors("field");
     fieldTypes.enableTermVectorOffsets("field");
     fieldTypes.enableTermVectorPositions("field");
+    fieldTypes.setMultiValued("field");
     doc.addLargeText("field", "abcd");
     doc.addLargeText("field", "");
     doc.addLargeText("field", "crunch");

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTerms.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTerms.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTerms.java Thu Nov 27 11:34:43 2014
@@ -22,11 +22,7 @@ import java.util.*;
 import org.apache.lucene.analysis.CannedBinaryTokenStream;
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DoubleField;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.FloatField;
-import org.apache.lucene.document.IntField;
-import org.apache.lucene.document.LongField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/index/TestTermsEnum.java Thu Nov 27 11:34:43 2014
@@ -25,7 +25,6 @@ import org.apache.lucene.document.Docume
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldTypes;
-import org.apache.lucene.document.IntField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
@@ -44,11 +43,11 @@ public class TestTermsEnum extends Lucen
 
   public void test() throws Exception {
     Random random = new Random(random().nextLong());
-    final LineFileDocs docs = new LineFileDocs(random, true);
     final Directory d = newDirectory();
     MockAnalyzer analyzer = new MockAnalyzer(random());
     analyzer.setMaxTokenLength(TestUtil.nextInt(random(), 1, IndexWriter.MAX_TERM_LENGTH));
     final RandomIndexWriter w = new RandomIndexWriter(random(), d, analyzer);
+    final LineFileDocs docs = new LineFileDocs(w.w, random);
     final int numDocs = atLeast(10);
     for(int docCount=0;docCount<numDocs;docCount++) {
       w.addDocument(docs.nextDoc());
@@ -830,6 +829,7 @@ public class TestTermsEnum extends Lucen
     RandomIndexWriter w = new RandomIndexWriter(random(), dir, iwc);
     FieldTypes fieldTypes = w.getFieldTypes();
     fieldTypes.disableSorting("field");
+    fieldTypes.setMultiValued("field");
 
     Document2 doc = w.newDocument();
     doc.addAtom("field", "");

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/BaseTestRangeFilter.java Thu Nov 27 11:34:43 2014
@@ -23,13 +23,9 @@ import java.util.Random;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DoubleField;
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldTypes;
-import org.apache.lucene.document.FloatField;
-import org.apache.lucene.document.IntField;
-import org.apache.lucene.document.LongField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.index.IndexReader;

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java Thu Nov 27 11:34:43 2014
@@ -391,9 +391,9 @@ public class TestControlledRealTimeReope
 
     @Override
     public void updateDocument(Term term,
-        Iterable<? extends IndexableField> doc, Analyzer analyzer)
+        Iterable<? extends IndexableField> doc)
         throws IOException {
-      super.updateDocument(term, doc, analyzer);
+      super.updateDocument(term, doc);
       try {
         if (waitAfterUpdate) {
           signal.countDown();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Thu Nov 27 11:34:43 2014
@@ -24,10 +24,11 @@ import java.util.Locale;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Document2;
+import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.FieldInvertState;
@@ -104,6 +105,10 @@ public class TestDisjunctionMaxQuery ext
         newIndexWriterConfig(new MockAnalyzer(random()))
                              .setSimilarity(sim).setMergePolicy(newLogMergePolicy()));
     
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("dek");
+    fieldTypes.setMultiValued("hed");
+
     // hed is the most important field, dek is secondary
     
     // d1 is an "ok" match for: albino elephant

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestFieldCacheRangeFilter.java Thu Nov 27 11:34:43 2014
@@ -24,7 +24,6 @@ import org.apache.lucene.document.Docume
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldTypes;
-import org.apache.lucene.document.IntField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;

Added: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeFilter.java?rev=1642110&view=auto
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeFilter.java (added)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestNumericRangeFilter.java Thu Nov 27 11:34:43 2014
@@ -0,0 +1,50 @@
+package org.apache.lucene.search;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.document.Document2;
+import org.apache.lucene.document.FieldTypes;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.MultiDocValues;
+import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.LuceneTestCase;
+
+// nocommit more
+
+public class TestNumericRangeFilter extends LuceneTestCase {
+  public void testBasicDoubleRange() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());
+    Document2 doc = w.newDocument();
+    doc.addDouble("number", -103.0);
+    w.addDocument(doc);
+    IndexReader r = DirectoryReader.open(w, true);
+    FieldTypes fieldTypes = r.getFieldTypes();
+    IndexSearcher s = newSearcher(r);
+    Query q = new ConstantScoreQuery(fieldTypes.newRangeFilter("number", -110, true, 400, false));
+    assertEquals(1, s.search(q, 1).totalHits);
+    NumericDocValues ndv = MultiDocValues.getNumericValues(r, "number");
+    assertEquals(-103.0, Document2.longToDouble(ndv.get(0)), .0000000001);
+    r.close();
+    w.close();
+    dir.close();
+  }
+}

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPhraseQuery.java Thu Nov 27 11:34:43 2014
@@ -61,6 +61,8 @@ public class TestPhraseQuery extends Luc
       }
     };
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory, analyzer);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("repeated");
     
     Document2 doc = writer.newDocument();
     doc.addLargeText("field", "one two three four five");

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryRescorer.java Thu Nov 27 11:34:43 2014
@@ -481,7 +481,7 @@ public class TestQueryRescorer extends L
 
             @Override
             public float score() throws IOException {
-              int num = idToNum[Integer.parseInt(context.reader().document(docID).getString("id"))];
+              int num = idToNum[context.reader().document(docID).getInt("id")];
               if (reverse) {
                 //System.out.println("score doc=" + docID + " num=" + num);
                 return num;

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSameScoresWithThreads.java Thu Nov 27 11:34:43 2014
@@ -25,6 +25,7 @@ import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 
 import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
@@ -46,13 +47,13 @@ public class TestSameScoresWithThreads e
     MockAnalyzer analyzer = new MockAnalyzer(random());
     analyzer.setMaxTokenLength(TestUtil.nextInt(random(), 1, IndexWriter.MAX_TERM_LENGTH));
     final RandomIndexWriter w = new RandomIndexWriter(random(), dir, analyzer);
-    LineFileDocs docs = new LineFileDocs(random());
+    LineFileDocs docs = new LineFileDocs(w.w, random());
     int charsToIndex = atLeast(100000);
     int charsIndexed = 0;
     //System.out.println("bytesToIndex=" + charsToIndex);
     while(charsIndexed < charsToIndex) {
-      Document doc = docs.nextDoc();
-      charsIndexed += doc.get("body").length();
+      Document2 doc = docs.nextDoc();
+      charsIndexed += doc.getString("body").length();
       w.addDocument(doc);
       //System.out.println("  bytes=" + charsIndexed + " add: " + doc);
     }

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchAfter.java Thu Nov 27 11:34:43 2014
@@ -25,13 +25,9 @@ import java.util.List;
 import org.apache.lucene.document.BinaryDocValuesField;
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DoubleField;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.FloatDocValuesField;
-import org.apache.lucene.document.FloatField;
-import org.apache.lucene.document.IntField;
-import org.apache.lucene.document.LongField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.document.StoredField;

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSort.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSort.java Thu Nov 27 11:34:43 2014
@@ -28,6 +28,7 @@ import org.apache.lucene.document.FieldT
 import org.apache.lucene.document.FloatDocValuesField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
+import org.apache.lucene.document.StoredField;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
@@ -246,9 +247,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("300000", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1, searcher.doc(td.scoreDocs[0].doc).getInt("value").intValue());
+    assertEquals(4, searcher.doc(td.scoreDocs[1].doc).getInt("value").intValue());
+    assertEquals(300000, searcher.doc(td.scoreDocs[2].doc).getInt("value").intValue());
 
     ir.close();
     dir.close();
@@ -274,9 +275,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // reverse numeric order
-    assertEquals("300000", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(300000, searcher.doc(td.scoreDocs[0].doc).getInt("value").intValue());
+    assertEquals(4, searcher.doc(td.scoreDocs[1].doc).getInt("value").intValue());
+    assertEquals(-1, searcher.doc(td.scoreDocs[2].doc).getInt("value").intValue());
 
     ir.close();
     dir.close();
@@ -303,8 +304,8 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // sort missing last by default:
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertEquals(-1, searcher.doc(td.scoreDocs[0].doc).getInt("value").intValue());
+    assertEquals(4, searcher.doc(td.scoreDocs[1].doc).getInt("value").intValue());
     assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
@@ -332,8 +333,8 @@ public class TestSort extends LuceneTest
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertEquals(-1, searcher.doc(td.scoreDocs[0].doc).getInt("value").intValue());
+    assertEquals(4, searcher.doc(td.scoreDocs[1].doc).getInt("value").intValue());
     assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
@@ -359,9 +360,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("3000000000", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1L, searcher.doc(td.scoreDocs[0].doc).getLong("value").longValue());
+    assertEquals(4L, searcher.doc(td.scoreDocs[1].doc).getLong("value").longValue());
+    assertEquals(3000000000L, searcher.doc(td.scoreDocs[2].doc).getLong("value").longValue());
 
     ir.close();
     dir.close();
@@ -386,9 +387,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // reverse numeric order
-    assertEquals("3000000000", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(3000000000L, searcher.doc(td.scoreDocs[0].doc).getLong("value").longValue());
+    assertEquals(4L, searcher.doc(td.scoreDocs[1].doc).getLong("value").longValue());
+    assertEquals(-1L, searcher.doc(td.scoreDocs[2].doc).getLong("value").longValue());
 
     ir.close();
     dir.close();
@@ -415,8 +416,8 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // sort missing last by default:
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertEquals(-1L, searcher.doc(td.scoreDocs[0].doc).getLong("value").longValue());
+    assertEquals(4L, searcher.doc(td.scoreDocs[1].doc).getLong("value").longValue());
     assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
@@ -444,8 +445,8 @@ public class TestSort extends LuceneTest
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertEquals(-1, searcher.doc(td.scoreDocs[0].doc).getLong("value").longValue());
+    assertEquals(4, searcher.doc(td.scoreDocs[1].doc).getLong("value").longValue());
     assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
@@ -472,9 +473,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("30.1", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1.3f, searcher.doc(td.scoreDocs[0].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(4.2f, searcher.doc(td.scoreDocs[1].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(30.1f, searcher.doc(td.scoreDocs[2].doc).getFloat("value").floatValue(), 0.0f);
 
     ir.close();
     dir.close();
@@ -500,9 +501,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("30.1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(30.1f, searcher.doc(td.scoreDocs[0].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(4.2f, searcher.doc(td.scoreDocs[1].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(-1.3f, searcher.doc(td.scoreDocs[2].doc).getFloat("value").floatValue(), 0.0f);
 
     ir.close();
     dir.close();
@@ -530,8 +531,8 @@ public class TestSort extends LuceneTest
     assertEquals(3, td.totalHits);
 
     // sort missing last by default:
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertEquals(-1.3f, searcher.doc(td.scoreDocs[0].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(4.2f, searcher.doc(td.scoreDocs[1].doc).getFloat("value").floatValue(), 0.0f);
     assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
@@ -560,9 +561,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
 
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1.3f, searcher.doc(td.scoreDocs[0].doc).getFloat("value").floatValue(), 0.0f);
+    assertEquals(4.2f, searcher.doc(td.scoreDocs[1].doc).getFloat("value").floatValue(), 0.0f);
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getFloat("value"));
 
     ir.close();
     dir.close();
@@ -588,10 +589,10 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
     // numeric order
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[2].doc).getString("value"));
-    assertEquals("30.1", searcher.doc(td.scoreDocs[3].doc).getString("value"));
+    assertEquals(-1.3, searcher.doc(td.scoreDocs[0].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(4.2333333333332, searcher.doc(td.scoreDocs[1].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(4.2333333333333, searcher.doc(td.scoreDocs[2].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(30.1, searcher.doc(td.scoreDocs[3].doc).getDouble("value").doubleValue(), 0.0);
 
     ir.close();
     dir.close();
@@ -644,10 +645,10 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
     // numeric order
-    assertEquals("30.1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[2].doc).getString("value"));
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[3].doc).getString("value"));
+    assertEquals(30.1, searcher.doc(td.scoreDocs[0].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(4.2333333333333, searcher.doc(td.scoreDocs[1].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(4.2333333333332, searcher.doc(td.scoreDocs[2].doc).getDouble("value").doubleValue(), 0.0);
+    assertEquals(-1.3, searcher.doc(td.scoreDocs[3].doc).getDouble("value").doubleValue(), 0.0);
 
     ir.close();
     dir.close();
@@ -674,9 +675,9 @@ public class TestSort extends LuceneTest
     assertEquals(4, td.totalHits);
 
     // sort missing last by default:
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1.3, searcher.doc(td.scoreDocs[0].doc).getDouble("value").doubleValue(), 0.0d);
+    assertEquals(4.2333333333332, searcher.doc(td.scoreDocs[1].doc).getDouble("value").doubleValue(), 0.0d);
+    assertEquals(4.2333333333333, searcher.doc(td.scoreDocs[2].doc).getDouble("value").doubleValue(), 0.0d);
     assertNull(searcher.doc(td.scoreDocs[3].doc).get("value"));
 
     ir.close();
@@ -703,9 +704,9 @@ public class TestSort extends LuceneTest
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
 
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).getString("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[1].doc).getString("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[2].doc).getString("value"));
+    assertEquals(-1.3, searcher.doc(td.scoreDocs[0].doc).getDouble("value").doubleValue(), 0.0d);
+    assertEquals(4.2333333333332, searcher.doc(td.scoreDocs[1].doc).getDouble("value").doubleValue(), 0.0d);
+    assertEquals(4.2333333333333, searcher.doc(td.scoreDocs[2].doc).getDouble("value").doubleValue(), 0.0d);
     assertNull(searcher.doc(td.scoreDocs[3].doc).get("value"));
 
     ir.close();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortRescorer.java Thu Nov 27 11:34:43 2014
@@ -150,8 +150,8 @@ public class TestSortRescorer extends Lu
                   @Override
                   public int compare(Integer a, Integer b) {
                     try {
-                      int av = idToNum[Integer.parseInt(r.document(a).getString("id"))];
-                      int bv = idToNum[Integer.parseInt(r.document(b).getString("id"))];
+                      int av = idToNum[r.document(a).getInt("id")];
+                      int bv = idToNum[r.document(b).getInt("id")];
                       if (av < bv) {
                         return -reverseInt;
                       } else if (bv < av) {

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java Thu Nov 27 11:34:43 2014
@@ -25,8 +25,6 @@ import java.util.List;
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.FloatField;
-import org.apache.lucene.document.IntField;
 import org.apache.lucene.index.CompositeReaderContext;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexReaderContext;

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java Thu Nov 27 11:34:43 2014
@@ -23,6 +23,7 @@ import java.util.Set;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -60,7 +61,12 @@ public class TestFieldMaskingSpanQuery e
   @BeforeClass
   public static void beforeClass() throws Exception {
     directory = newDirectory();
-    RandomIndexWriter writer= new RandomIndexWriter(random(), directory, newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter writer = new RandomIndexWriter(random(), directory, newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+
+    fieldTypes.setMultiValued("gender");
+    fieldTypes.setMultiValued("first");
+    fieldTypes.setMultiValued("last");
     
     writer.addDocument(doc(writer,
                            "id", "0",

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java Thu Nov 27 11:34:43 2014
@@ -24,6 +24,7 @@ import java.util.List;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
@@ -56,7 +57,7 @@ public class TestNRTCachingDirectory ext
     analyzer.setMaxTokenLength(TestUtil.nextInt(random(), 1, IndexWriter.MAX_TERM_LENGTH));
     IndexWriterConfig conf = newIndexWriterConfig(analyzer);
     RandomIndexWriter w = new RandomIndexWriter(random(), cachedDir, conf);
-    final LineFileDocs docs = new LineFileDocs(random(), true);
+    final LineFileDocs docs = new LineFileDocs(w.w, random());
     final int numDocs = TestUtil.nextInt(random(), 100, 400);
 
     if (VERBOSE) {
@@ -66,8 +67,8 @@ public class TestNRTCachingDirectory ext
     final List<BytesRef> ids = new ArrayList<>();
     DirectoryReader r = null;
     for(int docCount=0;docCount<numDocs;docCount++) {
-      final Document doc = docs.nextDoc();
-      ids.add(new BytesRef(doc.get("docid")));
+      final Document2 doc = docs.nextDoc();
+      ids.add(new BytesRef(doc.getString("docid")));
       w.addDocument(doc);
       if (random().nextInt(20) == 17) {
         if (r == null) {

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java Thu Nov 27 11:34:43 2014
@@ -305,7 +305,6 @@ public class TestFSTs extends LuceneTest
   // file, up until a time limit
   public void testRealTerms() throws Exception {
 
-    final LineFileDocs docs = new LineFileDocs(random(), true);
     final int RUN_TIME_MSEC = atLeast(500);
     MockAnalyzer analyzer = new MockAnalyzer(random());
     analyzer.setMaxTokenLength(TestUtil.nextInt(random(), 1, IndexWriter.MAX_TERM_LENGTH));
@@ -314,8 +313,9 @@ public class TestFSTs extends LuceneTest
     final Path tempDir = createTempDir("fstlines");
     final Directory dir = newFSDirectory(tempDir);
     final IndexWriter writer = new IndexWriter(dir, conf);
+    final LineFileDocs docs = new LineFileDocs(writer, random());
     final long stopTime = System.currentTimeMillis() + RUN_TIME_MSEC;
-    Document doc;
+    Document2 doc;
     int docCount = 0;
     while((doc = docs.nextDoc()) != null && System.currentTimeMillis() < stopTime) {
       writer.addDocument(doc);

Modified: lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/IndexFiles.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/IndexFiles.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/IndexFiles.java (original)
+++ lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/IndexFiles.java Thu Nov 27 11:34:43 2014
@@ -17,20 +17,6 @@ package org.apache.lucene.demo;
  * limitations under the License.
  */
 
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.LongField;
-import org.apache.lucene.document.StringField;
-import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -44,6 +30,20 @@ import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Date;
 
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document2;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.StringField;
+import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+
 /** Index all text files under a directory.
  * <p>
  * This is a command-line application demonstrating simple Lucene indexing.
@@ -168,14 +168,13 @@ public class IndexFiles {
   static void indexDoc(IndexWriter writer, Path file, long lastModified) throws IOException {
     try (InputStream stream = Files.newInputStream(file)) {
       // make a new, empty document
-      Document doc = new Document();
+      Document2 doc = writer.newDocument();
       
       // Add the path of the file as a field named "path".  Use a
       // field that is indexed (i.e. searchable), but don't tokenize 
       // the field into separate words and don't index term frequency
       // or positional information:
-      Field pathField = new StringField("path", file.toString(), Field.Store.YES);
-      doc.add(pathField);
+      doc.addAtom("path", file.toString());
       
       // Add the last modified date of the file a field named "modified".
       // Use a LongField that is indexed (i.e. efficiently filterable with
@@ -184,13 +183,13 @@ public class IndexFiles {
       // year/month/day/hour/minutes/seconds, down the resolution you require.
       // For example the long value 2011021714 would mean
       // February 17, 2011, 2-3 PM.
-      doc.add(new LongField("modified", lastModified, Field.Store.NO));
+      doc.addLong("modified", lastModified);
       
       // Add the contents of the file to a field named "contents".  Specify a Reader,
       // so that the text of the file is tokenized and indexed, but not stored.
       // Note that FileReader expects the file to be in UTF-8 encoding.
       // If that's not the case searching for special characters will fail.
-      doc.add(new TextField("contents", new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))));
+      doc.addLargeText("contents", new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)));
       
       if (writer.getConfig().getOpenMode() == OpenMode.CREATE) {
         // New index, so we just add the document (no old document can be there):

Modified: lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java (original)
+++ lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/AssociationsFacetsExample.java Thu Nov 27 11:34:43 2014
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.facet.DrillDownQuery;
 import org.apache.lucene.facet.FacetResult;
@@ -37,8 +38,8 @@ import org.apache.lucene.facet.taxonomy.
 import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.store.Directory;
@@ -68,14 +69,14 @@ public class AssociationsFacetsExample {
     // Writes facet ords to a separate directory from the main index
     DirectoryTaxonomyWriter taxoWriter = new DirectoryTaxonomyWriter(taxoDir);
 
-    Document doc = new Document();
+    Document2 doc = indexWriter.newDocument();
     // 3 occurrences for tag 'lucene'
     doc.add(new IntAssociationFacetField(3, "tags", "lucene"));
     // 87% confidence level of genre 'computing'
     doc.add(new FloatAssociationFacetField(0.87f, "genre", "computing"));
     indexWriter.addDocument(config.build(taxoWriter, doc));
 
-    doc = new Document();
+    doc = indexWriter.newDocument();
     // 1 occurrence for tag 'lucene'
     doc.add(new IntAssociationFacetField(1, "tags", "lucene"));
     // 2 occurrence for tag 'solr'

Modified: lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java (original)
+++ lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/DistanceFacetsExample.java Thu Nov 27 11:34:43 2014
@@ -22,9 +22,10 @@ import java.io.IOException;
 import java.text.ParseException;
 
 import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DoubleField;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.expressions.Expression;
 import org.apache.lucene.expressions.SimpleBindings;
@@ -40,8 +41,8 @@ import org.apache.lucene.facet.range.Dou
 import org.apache.lucene.facet.taxonomy.TaxonomyReader;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.queries.BooleanFilter;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.search.BooleanClause;
@@ -93,25 +94,19 @@ public class DistanceFacetsExample imple
 
     // Add documents with latitude/longitude location:
     // we index these both as DoubleFields (for bounding box/ranges) and as NumericDocValuesFields (for scoring)
-    Document doc = new Document();
-    doc.add(new DoubleField("latitude", 40.759011, Field.Store.NO));
-    doc.add(new NumericDocValuesField("latitude", Double.doubleToRawLongBits(40.759011)));
-    doc.add(new DoubleField("longitude", -73.9844722, Field.Store.NO));
-    doc.add(new NumericDocValuesField("longitude", Double.doubleToRawLongBits(-73.9844722)));
+    Document2 doc = writer.newDocument();
+    doc.addDouble("latitude", 40.759011);
+    doc.addDouble("longitude", -73.9844722);
     writer.addDocument(doc);
     
-    doc = new Document();
-    doc.add(new DoubleField("latitude", 40.718266, Field.Store.NO));
-    doc.add(new NumericDocValuesField("latitude", Double.doubleToRawLongBits(40.718266)));
-    doc.add(new DoubleField("longitude", -74.007819, Field.Store.NO));
-    doc.add(new NumericDocValuesField("longitude", Double.doubleToRawLongBits(-74.007819)));
+    doc = writer.newDocument();
+    doc.addDouble("latitude", 40.718266);
+    doc.addDouble("longitude", -74.007819);
     writer.addDocument(doc);
     
-    doc = new Document();
-    doc.add(new DoubleField("latitude", 40.7051157, Field.Store.NO));
-    doc.add(new NumericDocValuesField("latitude", Double.doubleToRawLongBits(40.7051157)));
-    doc.add(new DoubleField("longitude", -74.0088305, Field.Store.NO));
-    doc.add(new NumericDocValuesField("longitude", Double.doubleToRawLongBits(-74.0088305)));
+    doc = writer.newDocument();
+    doc.addDouble("latitude", 40.7051157);
+    doc.addDouble("longitude", -74.0088305);
     writer.addDocument(doc);
 
     // Open near-real-time searcher
@@ -139,7 +134,7 @@ public class DistanceFacetsExample imple
    *  maximum great circle (surface of the earth) distance,
    *  returns a simple Filter bounding box to "fast match"
    *  candidates. */
-  public static Filter getBoundingBoxFilter(double originLat, double originLng, double maxDistanceKM) {
+  public static Filter getBoundingBoxFilter(FieldTypes fieldTypes, double originLat, double originLng, double maxDistanceKM) {
 
     // Basic bounding box geo math from
     // http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates,
@@ -182,7 +177,7 @@ public class DistanceFacetsExample imple
     BooleanFilter f = new BooleanFilter();
 
     // Add latitude range filter:
-    f.add(NumericRangeFilter.newDoubleRange("latitude", Math.toDegrees(minLat), Math.toDegrees(maxLat), true, true),
+    f.add(fieldTypes.newRangeFilter("latitude", Math.toDegrees(minLat), true, Math.toDegrees(maxLat), true),
           BooleanClause.Occur.MUST);
 
     // Add longitude range filter:
@@ -190,13 +185,13 @@ public class DistanceFacetsExample imple
       // The bounding box crosses the international date
       // line:
       BooleanFilter lonF = new BooleanFilter();
-      lonF.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), null, true, true),
+      lonF.add(fieldTypes.newRangeFilter("longitude", Math.toDegrees(minLng), true, null, true),
                BooleanClause.Occur.SHOULD);
-      lonF.add(NumericRangeFilter.newDoubleRange("longitude", null, Math.toDegrees(maxLng), true, true),
+      lonF.add(fieldTypes.newRangeFilter("longitude", null, true, Math.toDegrees(maxLng), true),
                BooleanClause.Occur.SHOULD);
       f.add(lonF, BooleanClause.Occur.MUST);
     } else {
-      f.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), Math.toDegrees(maxLng), true, true),
+      f.add(fieldTypes.newRangeFilter("longitude", Math.toDegrees(minLng), true, Math.toDegrees(maxLng), true),
             BooleanClause.Occur.MUST);
     }
 
@@ -211,7 +206,7 @@ public class DistanceFacetsExample imple
     searcher.search(new MatchAllDocsQuery(), fc);
 
     Facets facets = new DoubleRangeFacetCounts("field", getDistanceValueSource(), fc,
-                                               getBoundingBoxFilter(ORIGIN_LATITUDE, ORIGIN_LONGITUDE, 10.0),
+                                               getBoundingBoxFilter(searcher.getFieldTypes(), ORIGIN_LATITUDE, ORIGIN_LONGITUDE, 10.0),
                                                ONE_KM,
                                                TWO_KM,
                                                FIVE_KM,
@@ -227,7 +222,7 @@ public class DistanceFacetsExample imple
     // documents ("browse only"):
     DrillDownQuery q = new DrillDownQuery(null);
     final ValueSource vs = getDistanceValueSource();
-    q.add("field", range.getFilter(getBoundingBoxFilter(ORIGIN_LATITUDE, ORIGIN_LONGITUDE, range.max), vs));
+    q.add("field", range.getFilter(getBoundingBoxFilter(searcher.getFieldTypes(), ORIGIN_LATITUDE, ORIGIN_LONGITUDE, range.max), vs));
     DrillSideways ds = new DrillSideways(searcher, config, (TaxonomyReader) null) {
         @Override
         protected Facets buildFacetsResult(FacetsCollector drillDowns, FacetsCollector[] drillSideways, String[] drillSidewaysDims) throws IOException {        

Modified: lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java (original)
+++ lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/RangeFacetsExample.java Thu Nov 27 11:34:43 2014
@@ -21,9 +21,10 @@ import java.io.Closeable;
 import java.io.IOException;
 
 import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.LongField;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.facet.DrillDownQuery;
 import org.apache.lucene.facet.FacetResult;
@@ -34,8 +35,9 @@ import org.apache.lucene.facet.range.Lon
 import org.apache.lucene.facet.range.LongRangeFacetCounts;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.NumericRangeQuery;
@@ -48,6 +50,7 @@ public class RangeFacetsExample implemen
 
   private final Directory indexDir = new RAMDirectory();
   private IndexSearcher searcher;
+  private FieldTypes fieldTypes;
   private final long nowSec = System.currentTimeMillis();
 
   final LongRange PAST_HOUR = new LongRange("Past hour", nowSec-3600, true, nowSec, true);
@@ -65,17 +68,16 @@ public class RangeFacetsExample implemen
     // Add documents with a fake timestamp, 1000 sec before
     // "now", 2000 sec before "now", ...:
     for(int i=0;i<100;i++) {
-      Document doc = new Document();
+      Document2 doc = indexWriter.newDocument();
       long then = nowSec - i * 1000;
-      // Add as doc values field, so we can compute range facets:
-      doc.add(new NumericDocValuesField("timestamp", then));
-      // Add as numeric field so we can drill-down:
-      doc.add(new LongField("timestamp", then, Field.Store.NO));
+      // Add as numeric field, so we can compute range facets and drill down:
+      doc.addLong("timestamp", then);
       indexWriter.addDocument(doc);
     }
 
     // Open near-real-time searcher
     searcher = new IndexSearcher(DirectoryReader.open(indexWriter, true));
+    fieldTypes = searcher.getFieldTypes();
     indexWriter.close();
   }
 
@@ -108,7 +110,7 @@ public class RangeFacetsExample implemen
     // documents ("browse only"):
     DrillDownQuery q = new DrillDownQuery(getConfig());
 
-    q.add("timestamp", NumericRangeQuery.newLongRange("timestamp", range.min, range.max, range.minInclusive, range.maxInclusive));
+    q.add("timestamp", new ConstantScoreQuery(fieldTypes.newRangeFilter("timestamp", range.min, range.minInclusive, range.max, range.maxInclusive)));
 
     return searcher.search(q, 10);
   }

Modified: lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java?rev=1642110&r1=1642109&r2=1642110&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java (original)
+++ lucene/dev/branches/lucene6005/lucene/demo/src/java/org/apache/lucene/demo/facet/SimpleFacetsExample.java Thu Nov 27 11:34:43 2014
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.facet.DrillDownQuery;
 import org.apache.lucene.facet.DrillSideways.DrillSidewaysResult;
@@ -37,8 +38,8 @@ import org.apache.lucene.facet.taxonomy.
 import org.apache.lucene.facet.taxonomy.directory.DirectoryTaxonomyWriter;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.store.Directory;
@@ -64,27 +65,27 @@ public class SimpleFacetsExample {
     // Writes facet ords to a separate directory from the main index
     DirectoryTaxonomyWriter taxoWriter = new DirectoryTaxonomyWriter(taxoDir);
 
-    Document doc = new Document();
+    Document2 doc = indexWriter.newDocument();
     doc.add(new FacetField("Author", "Bob"));
     doc.add(new FacetField("Publish Date", "2010", "10", "15"));
     indexWriter.addDocument(config.build(taxoWriter, doc));
 
-    doc = new Document();
+    doc = indexWriter.newDocument();
     doc.add(new FacetField("Author", "Lisa"));
     doc.add(new FacetField("Publish Date", "2010", "10", "20"));
     indexWriter.addDocument(config.build(taxoWriter, doc));
 
-    doc = new Document();
+    doc = indexWriter.newDocument();
     doc.add(new FacetField("Author", "Lisa"));
     doc.add(new FacetField("Publish Date", "2012", "1", "1"));
     indexWriter.addDocument(config.build(taxoWriter, doc));
 
-    doc = new Document();
+    doc = indexWriter.newDocument();
     doc.add(new FacetField("Author", "Susan"));
     doc.add(new FacetField("Publish Date", "2012", "1", "7"));
     indexWriter.addDocument(config.build(taxoWriter, doc));
 
-    doc = new Document();
+    doc = indexWriter.newDocument();
     doc.add(new FacetField("Author", "Frank"));
     doc.add(new FacetField("Publish Date", "1999", "5", "5"));
     indexWriter.addDocument(config.build(taxoWriter, doc));