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/11 12:24:56 UTC

svn commit: r1638066 [3/4] - in /lucene/dev/branches/lucene6005/lucene/core/src: java/ java/org/apache/lucene/document/ java/org/apache/lucene/index/ test/org/apache/lucene/codecs/lucene50/ test/org/apache/lucene/codecs/perfield/ test/org/apache/lucene...

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=1638066&r1=1638065&r2=1638066&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 Tue Nov 11 11:24:51 2014
@@ -62,20 +62,19 @@ public class TestPhraseQuery extends Luc
     };
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory, analyzer);
     
-    Document doc = new Document();
-    doc.add(newTextField("field", "one two three four five", Field.Store.YES));
-    doc.add(newTextField("repeated", "this is a repeated field - first part", Field.Store.YES));
-    Field repeatedField = newTextField("repeated", "second part of a repeated field", Field.Store.YES);
-    doc.add(repeatedField);
-    doc.add(newTextField("palindrome", "one two three two one", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("field", "one two three four five");
+    doc.addLargeText("repeated", "this is a repeated field - first part");
+    doc.addLargeText("repeated", "second part of a repeated field");
+    doc.addLargeText("palindrome", "one two three two one");
     writer.addDocument(doc);
     
-    doc = new Document();
-    doc.add(newTextField("nonexist", "phrase exist notexist exist found", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addLargeText("nonexist", "phrase exist notexist exist found");
     writer.addDocument(doc);
     
-    doc = new Document();
-    doc.add(newTextField("nonexist", "phrase exist notexist exist found", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addLargeText("nonexist", "phrase exist notexist exist found");
     writer.addDocument(doc);
 
     reader = writer.getReader();
@@ -216,8 +215,8 @@ public class TestPhraseQuery extends Luc
     Analyzer stopAnalyzer = new MockAnalyzer(random(), MockTokenizer.SIMPLE, true, MockTokenFilter.ENGLISH_STOPSET);
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory, 
         newIndexWriterConfig(stopAnalyzer));
-    Document doc = new Document();
-    doc.add(newTextField("field", "the stop words are here", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("field", "the stop words are here");
     writer.addDocument(doc);
     IndexReader reader = writer.getReader();
     writer.close();
@@ -240,13 +239,13 @@ public class TestPhraseQuery extends Luc
     Directory directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
     
-    Document doc = new Document();
-    doc.add(newTextField("source", "marketing info", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("source", "marketing info");
     writer.addDocument(doc);
     
-    doc = new Document();
-    doc.add(newTextField("contents", "foobar", Field.Store.YES));
-    doc.add(newTextField("source", "marketing info", Field.Store.YES)); 
+    doc = writer.newDocument();
+    doc.addLargeText("contents", "foobar");
+    doc.addLargeText("source", "marketing info");
     writer.addDocument(doc);
     
     IndexReader reader = writer.getReader();
@@ -275,16 +274,16 @@ public class TestPhraseQuery extends Luc
     
     writer = new RandomIndexWriter(random(), directory, 
         newIndexWriterConfig(new MockAnalyzer(random())).setOpenMode(OpenMode.CREATE));
-    doc = new Document();
-    doc.add(newTextField("contents", "map entry woo", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addLargeText("contents", "map entry woo");
     writer.addDocument(doc);
 
-    doc = new Document();
-    doc.add(newTextField("contents", "woo map entry", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addLargeText("contents", "woo map entry");
     writer.addDocument(doc);
 
-    doc = new Document();
-    doc.add(newTextField("contents", "map foobarword entry woo", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addLargeText("contents", "map foobarword entry woo");
     writer.addDocument(doc);
 
     reader = writer.getReader();
@@ -328,16 +327,16 @@ public class TestPhraseQuery extends Luc
           .setMergePolicy(newLogMergePolicy())
           .setSimilarity(new DefaultSimilarity()));
 
-    Document doc = new Document();
-    doc.add(newTextField("field", "foo firstname lastname foo", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("field", "foo firstname lastname foo");
     writer.addDocument(doc);
     
-    Document doc2 = new Document();
-    doc2.add(newTextField("field", "foo firstname zzz lastname foo", Field.Store.YES));
+    Document2 doc2 = writer.newDocument();
+    doc2.addLargeText("field", "foo firstname zzz lastname foo");
     writer.addDocument(doc2);
     
-    Document doc3 = new Document();
-    doc3.add(newTextField("field", "foo firstname zzz yyy lastname foo", Field.Store.YES));
+    Document2 doc3 = writer.newDocument();
+    doc3.addLargeText("field", "foo firstname zzz yyy lastname foo");
     writer.addDocument(doc3);
     
     IndexReader reader = writer.getReader();
@@ -591,9 +590,6 @@ public class TestPhraseQuery extends Luc
 
     RandomIndexWriter w  = new RandomIndexWriter(random(), dir, newIndexWriterConfig(analyzer).setMergePolicy(newLogMergePolicy()));
     List<List<String>> docs = new ArrayList<>();
-    Document d = new Document();
-    Field f = newTextField("f", "", Field.Store.NO);
-    d.add(f);
 
     Random r = random();
 
@@ -638,7 +634,9 @@ public class TestPhraseQuery extends Luc
         }
       }
       docs.add(doc);
-      f.setStringValue(sb.toString());
+
+      Document2 d = w.newDocument();
+      d.addLargeText("f", sb.toString());
       w.addDocument(d);
     }
 

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositionIncrement.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositionIncrement.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositionIncrement.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositionIncrement.java Tue Nov 11 11:24:51 2014
@@ -23,28 +23,26 @@ import java.nio.charset.StandardCharsets
 import java.util.Collection;
 
 import org.apache.lucene.analysis.*;
+import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.LeafReader;
-import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.DocsAndPositionsEnum;
 import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.MultiFields;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.SlowCompositeReaderWrapper;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.store.Directory;
 import org.apache.lucene.search.payloads.PayloadSpanUtil;
 import org.apache.lucene.search.spans.MultiSpansWrapper;
 import org.apache.lucene.search.spans.SpanNearQuery;
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.search.spans.Spans;
-import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.LuceneTestCase;
 
 /**
  * Term position unit test.
@@ -91,8 +89,8 @@ public class TestPositionIncrement exten
     };
     Directory store = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), store, analyzer);
-    Document d = new Document();
-    d.add(newTextField("field", "bogus", Field.Store.YES));
+    Document2 d = writer.newDocument();
+    d.addLargeText("field", "bogus");
     writer.addDocument(d);
     IndexReader reader = writer.getReader();
     writer.close();
@@ -204,9 +202,8 @@ public class TestPositionIncrement exten
   public void testPayloadsPos0() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir, new MockPayloadAnalyzer());
-    Document doc = new Document();
-    doc.add(new TextField("content", new StringReader(
-        "a a b c d e a f g h i j a b k k")));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("content", new StringReader("a a b c d e a f g h i j a b k k"));
     writer.addDocument(doc);
 
     final IndexReader readerFromWriter = writer.getReader();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java Tue Nov 11 11:24:51 2014
@@ -22,7 +22,6 @@ import org.apache.lucene.index.RandomInd
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.document.Document;
 
 public class TestPositiveScoresOnlyCollector extends LuceneTestCase {
 
@@ -79,7 +78,7 @@ public class TestPositiveScoresOnlyColle
     
     Directory directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
-    writer.addDocument(new Document());
+    writer.addDocument(writer.newDocument());
     writer.commit();
     IndexReader ir = writer.getReader();
     writer.close();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixFilter.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixFilter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixFilter.java Tue Nov 11 11:24:51 2014
@@ -17,13 +17,12 @@ package org.apache.lucene.search;
  * limitations under the License.
  */
 
-import org.apache.lucene.document.Field;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.store.Directory;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.document.Document;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.LuceneTestCase;
 
 /**
  * Tests {@link PrefixFilter} class.
@@ -39,8 +38,8 @@ public class TestPrefixFilter extends Lu
                                         "/Computers/Windows"};
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
     for (int i = 0; i < categories.length; i++) {
-      Document doc = new Document();
-      doc.add(newStringField("category", categories[i], Field.Store.YES));
+      Document2 doc = writer.newDocument();
+      doc.addAtom("category", categories[i]);
       writer.addDocument(doc);
     }
     IndexReader reader = writer.getReader();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestPrefixInBooleanQuery.java Tue Nov 11 11:24:51 2014
@@ -17,8 +17,7 @@ package org.apache.lucene.search;
  * limitations under the License.
  */
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -27,7 +26,6 @@ import org.apache.lucene.util.LuceneTest
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
-
 /**
  * https://issues.apache.org/jira/browse/LUCENE-1974
  *
@@ -49,23 +47,25 @@ public class TestPrefixInBooleanQuery ex
     directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
 
-    Document doc = new Document();
-    Field field = newStringField(FIELD, "meaninglessnames", Field.Store.NO);
-    doc.add(field);
+    Document2 doc = writer.newDocument();
+    doc.addAtom(FIELD, "meaninglessnames");
     
     for (int i = 0; i < 5137; ++i) {
       writer.addDocument(doc);
     }
     
-    field.setStringValue("tangfulin");
+    doc = writer.newDocument();
+    doc.addAtom(FIELD, "tangfulin");
     writer.addDocument(doc);
 
-    field.setStringValue("meaninglessnames");
+    doc = writer.newDocument();
+    doc.addAtom(FIELD, "meaninglessnames");
     for (int i = 5138; i < 11377; ++i) {
       writer.addDocument(doc);
     }
     
-    field.setStringValue("tangfulin");
+    doc = writer.newDocument();
+    doc.addAtom(FIELD, "tangfulin");
     writer.addDocument(doc);
     
     reader = writer.getReader();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestQueryWrapperFilter.java Tue Nov 11 11:24:51 2014
@@ -16,11 +16,11 @@ package org.apache.lucene.search;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -34,8 +34,8 @@ public class TestQueryWrapperFilter exte
   public void testBasic() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(newTextField("field", "value", Field.Store.NO));
+    Document2 doc = writer.newDocument();
+    doc.addLargeText("field", "value");
     writer.addDocument(doc);
     IndexReader reader = writer.getReader();
     writer.close();
@@ -90,7 +90,7 @@ public class TestQueryWrapperFilter exte
     final int numDocs = atLeast(100);
     final Set<String> aDocs = new HashSet<>();
     for(int i=0;i<numDocs;i++) {
-      final Document doc = new Document();
+      final Document2 doc = w.newDocument();
       final String v;
       if (random().nextInt(5) == 4) {
         v = "a";
@@ -98,9 +98,8 @@ public class TestQueryWrapperFilter exte
       } else {
         v = "b";
       }
-      final Field f = newStringField("field", v, Field.Store.NO);
-      doc.add(f);
-      doc.add(newStringField("id", ""+i, Field.Store.YES));
+      doc.addAtom("field", v);
+      doc.addUniqueAtom("id", ""+i);
       w.addDocument(doc);
     }
 
@@ -128,8 +127,8 @@ public class TestQueryWrapperFilter exte
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
     for (int i = 0; i < 1000; i++) {
-      Document doc = new Document();
-      doc.add(newStringField("field", English.intToEnglish(i), Field.Store.NO));
+      Document2 doc = writer.newDocument();
+      doc.addUniqueAtom("field", English.intToEnglish(i));
       writer.addDocument(doc);
     }
     

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom.java Tue Nov 11 11:24:51 2014
@@ -23,10 +23,8 @@ import java.text.NumberFormat;
 import java.util.Locale;
 
 import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.FieldType;
-import org.apache.lucene.document.TextField;
+import org.apache.lucene.document.Document2;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
@@ -52,15 +50,13 @@ public class TestRegexpRandom extends Lu
         newIndexWriterConfig(new MockAnalyzer(random()))
         .setMaxBufferedDocs(TestUtil.nextInt(random(), 50, 1000)));
     
-    Document doc = new Document();
-    FieldType customType = new FieldType(TextField.TYPE_STORED);
-    customType.setOmitNorms(true);
-    Field field = newField("field", "", customType);
-    doc.add(field);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.disableNorms("field");
     
     NumberFormat df = new DecimalFormat("000", new DecimalFormatSymbols(Locale.ROOT));
     for (int i = 0; i < 1000; i++) {
-      field.setStringValue(df.format(i));
+      Document2 doc = writer.newDocument();
+      doc.addLargeText("field", df.format(i));
       writer.addDocument(doc);
     }
     

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java Tue Nov 11 11:24:51 2014
@@ -24,9 +24,7 @@ import java.util.List;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenizer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.SortedDocValuesField;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.FilteredTermsEnum;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
@@ -36,14 +34,13 @@ import org.apache.lucene.index.TermsEnum
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.CharsRef;
 import org.apache.lucene.util.CharsRefBuilder;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.UnicodeUtil;
+import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.AutomatonTestUtil;
 import org.apache.lucene.util.automaton.CharacterRunAutomaton;
-import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.RegExp;
 
 /**
@@ -65,18 +62,14 @@ public class TestRegexpRandom2 extends L
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir, 
         newIndexWriterConfig(new MockAnalyzer(random(), MockTokenizer.KEYWORD, false))
         .setMaxBufferedDocs(TestUtil.nextInt(random(), 50, 1000)));
-    Document doc = new Document();
-    Field field = newStringField(fieldName, "", Field.Store.NO);
-    doc.add(field);
-    Field dvField = new SortedDocValuesField(fieldName, new BytesRef());
-    doc.add(dvField);
     List<String> terms = new ArrayList<>();
     int num = atLeast(200);
     for (int i = 0; i < num; i++) {
       String s = TestUtil.randomUnicodeString(random());
-      field.setStringValue(s);
-      dvField.setBytesValue(new BytesRef(s));
       terms.add(s);
+
+      Document2 doc = writer.newDocument();
+      doc.addAtom(fieldName, s);
       writer.addDocument(doc);
     }
 

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearchWithThreads.java Tue Nov 11 11:24:51 2014
@@ -20,14 +20,13 @@ package org.apache.lucene.search;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
 
 @SuppressCodecs({ "SimpleText", "Memory", "Direct" })
 public class TestSearchWithThreads extends LuceneTestCase {
@@ -50,9 +49,6 @@ public class TestSearchWithThreads exten
 
     // TODO: replace w/ the @nightly test data; make this
     // into an optional @nightly stress test
-    final Document doc = new Document();
-    final Field body = newTextField("body", "", Field.Store.NO);
-    doc.add(body);
     final StringBuilder sb = new StringBuilder();
     for(int docCount=0;docCount<NUM_DOCS;docCount++) {
       final int numTerms = random().nextInt(10);
@@ -60,7 +56,8 @@ public class TestSearchWithThreads exten
         sb.append(random().nextBoolean() ? "aaa" : "bbb");
         sb.append(' ');
       }
-      body.setStringValue(sb.toString());
+      Document2 doc = w.newDocument();
+      doc.addLargeText("body", sb.toString());
       w.addDocument(doc);
       sb.delete(0, sb.length());
     }

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSearcherManager.java Tue Nov 11 11:24:51 2014
@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
 import org.apache.lucene.index.ConcurrentMergeScheduler;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
@@ -205,7 +204,7 @@ public class TestSearcherManager extends
     // Test can deadlock if we use SMS:
     IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(
         new MockAnalyzer(random())).setMergeScheduler(new ConcurrentMergeScheduler()));
-    writer.addDocument(new Document());
+    writer.addDocument(writer.newDocument());
     writer.commit();
     final CountDownLatch awaitEnterWarm = new CountDownLatch(1);
     final CountDownLatch awaitClose = new CountDownLatch(1);
@@ -237,7 +236,7 @@ public class TestSearcherManager extends
     } finally {
       searcherManager.release(searcher);
     }
-    writer.addDocument(new Document());
+    writer.addDocument(writer.newDocument());
     writer.commit();
     final AtomicBoolean success = new AtomicBoolean(false);
     final Throwable[] exc = new Throwable[1];
@@ -308,7 +307,7 @@ public class TestSearcherManager extends
     IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(
         new MockAnalyzer(random())).setMergeScheduler(new ConcurrentMergeScheduler()));
     SearcherManager sm = new SearcherManager(writer, false, new SearcherFactory());
-    writer.addDocument(new Document());
+    writer.addDocument(writer.newDocument());
     writer.commit();
     sm.maybeRefreshBlocking();
 
@@ -376,7 +375,7 @@ public class TestSearcherManager extends
         }
       }
     });
-    iw.addDocument(new Document());
+    iw.addDocument(iw.newDocument());
     iw.commit();
     assertFalse(afterRefreshCalled.get());
     sm.maybeRefreshBlocking();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java Tue Nov 11 11:24:51 2014
@@ -17,20 +17,18 @@ package org.apache.lucene.search;
  * limitations under the License.
  */
 
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.util.LuceneTestCase;
-
 import java.io.IOException;
 
+import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.similarities.DefaultSimilarity;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
+import org.apache.lucene.util.LuceneTestCase;
 
 /** Similarity unit test.
  *
@@ -58,11 +56,11 @@ public class TestSimilarity extends Luce
         newIndexWriterConfig(new MockAnalyzer(random()))
         .setSimilarity(new SimpleSimilarity()));
     
-    Document d1 = new Document();
-    d1.add(newTextField("field", "a c", Field.Store.YES));
+    Document2 d1 = writer.newDocument();
+    d1.addLargeText("field", "a c");
 
-    Document d2 = new Document();
-    d2.add(newTextField("field", "a b c", Field.Store.YES));
+    Document2 d2 = writer.newDocument();
+    d2.addLargeText("field", "a b c");
     
     writer.addDocument(d1);
     writer.addDocument(d2);

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=1638066&r1=1638065&r2=1638066&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 Tue Nov 11 11:24:51 2014
@@ -20,12 +20,15 @@ package org.apache.lucene.search;
 import java.io.IOException;
 
 import org.apache.lucene.document.BinaryDocValuesField;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.DoubleDocValuesField;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.document.FloatDocValuesField;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
+import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.store.Directory;
@@ -53,19 +56,18 @@ public class TestSort extends LuceneTest
   public void testString() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "foo");
     writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addAtom("value", "bar");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.STRING));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -81,19 +83,18 @@ public class TestSort extends LuceneTest
   public void testStringReverse() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "bar");
     writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addAtom("value", "foo");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.STRING, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -109,19 +110,21 @@ public class TestSort extends LuceneTest
   public void testStringVal() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new BinaryDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new BinaryDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setDocValuesType("value", DocValuesType.BINARY);
+    fieldTypes.enableSorting("value");
+    
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "foo");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addAtom("value", "bar");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -137,19 +140,22 @@ public class TestSort extends LuceneTest
   public void testStringValReverse() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new BinaryDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new BinaryDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setDocValuesType("value", DocValuesType.BINARY);
+    fieldTypes.enableSorting("value");
+
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "bar");
+    writer.addDocument(doc);
+
+    doc = writer.newDocument();
+    doc.addAtom("value", "foo");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -165,18 +171,19 @@ public class TestSort extends LuceneTest
   public void testStringValSorted() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "foo");
+    writer.addDocument(doc);
+
+    doc = writer.newDocument();
+    doc.addAtom("value", "bar");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
+
+    // NOTE: don't ask FieldTypes here, because we are forcing STRING_VAL even though we indexed SORTED DV:
     Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL));
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -193,18 +200,19 @@ public class TestSort extends LuceneTest
   public void testStringValReverseSorted() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("bar")));
-    doc.add(newStringField("value", "bar", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedDocValuesField("value", new BytesRef("foo")));
-    doc.add(newStringField("value", "foo", Field.Store.YES));
+    Document2 doc = writer.newDocument();
+    doc.addAtom("value", "bar");
+    writer.addDocument(doc);
+
+    doc = writer.newDocument();
+    doc.addAtom("value", "foo");
     writer.addDocument(doc);
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
+    // NOTE: don't ask FieldTypes here, because we are forcing STRING_VAL even though we indexed SORTED DV:
     Sort sort = new Sort(new SortField("value", SortField.Type.STRING_VAL, true));
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
@@ -221,30 +229,26 @@ public class TestSort extends LuceneTest
   public void testInt() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new NumericDocValuesField("value", 300000));
-    doc.add(newStringField("value", "300000", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    
+    for(int value : new int[] {300000, -1, 4}) {
+      Document2 doc = writer.newDocument();
+      doc.addInt("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.INT));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("300000", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
@@ -254,61 +258,54 @@ public class TestSort extends LuceneTest
   public void testIntReverse() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new NumericDocValuesField("value", 300000));
-    doc.add(newStringField("value", "300000", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(int value : new int[] {300000, -1, 4}) {
+      Document2 doc = writer.newDocument();
+      doc.addInt("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.INT, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // reverse numeric order
-    assertEquals("300000", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
   }
   
   /** Tests sorting on type int with a missing value */
-  public void testIntMissing() throws IOException {
+  public void testIntMissingDefault() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    writer.addDocument(writer.newDocument());
+    for(int value : new int[] {-1, 4}) {
+      Document2 doc = writer.newDocument();
+      doc.addInt("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.INT));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as a 0
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    // 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"));
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
     dir.close();
@@ -318,30 +315,26 @@ public class TestSort extends LuceneTest
   public void testIntMissingLast() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setSortMissingLast("value");
+    writer.addDocument(writer.newDocument());
+    for(int value : new int[] {-1, 4}) {
+      Document2 doc = writer.newDocument();
+      doc.addInt("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortField("value", SortField.Type.INT);
-    sortField.setMissingValue(Integer.MAX_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as a Integer.MAX_VALUE
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[2].doc).get("value"));
+    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
+    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
     dir.close();
@@ -351,30 +344,24 @@ public class TestSort extends LuceneTest
   public void testLong() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new NumericDocValuesField("value", 3000000000L));
-    doc.add(newStringField("value", "3000000000", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(long value : new long[] {3000000000L, -1L, 4L}) {
+      Document2 doc = writer.newDocument();
+      doc.addLong("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.LONG));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("3000000000", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
@@ -384,61 +371,53 @@ public class TestSort extends LuceneTest
   public void testLongReverse() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new NumericDocValuesField("value", 3000000000L));
-    doc.add(newStringField("value", "3000000000", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(long value : new long[] {3000000000L, -1L, 4L}) {
+      Document2 doc = writer.newDocument();
+      doc.addLong("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.LONG, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // reverse numeric order
-    assertEquals("3000000000", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("-1", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
   }
   
   /** Tests sorting on type long with a missing value */
-  public void testLongMissing() throws IOException {
+  public void testLongMissingDefault() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    writer.addDocument(writer.newDocument());
+    for(long value : new long[] {-1L, 4L}) {
+      Document2 doc = writer.newDocument();
+      doc.addLong("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.LONG));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as 0
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    // 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"));
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
     dir.close();
@@ -448,30 +427,26 @@ public class TestSort extends LuceneTest
   public void testLongMissingLast() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", -1));
-    doc.add(newStringField("value", "-1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new NumericDocValuesField("value", 4));
-    doc.add(newStringField("value", "4", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setSortMissingLast("value");
+    writer.addDocument(writer.newDocument());
+    for(long value : new long[] {-1L, 4L}) {
+      Document2 doc = writer.newDocument();
+      doc.addLong("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortField("value", SortField.Type.LONG);
-    sortField.setMissingValue(Long.MAX_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as Long.MAX_VALUE
-    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[2].doc).get("value"));
+    assertEquals("-1", searcher.doc(td.scoreDocs[0].doc).getString("value"));
+    assertEquals("4", searcher.doc(td.scoreDocs[1].doc).getString("value"));
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
     dir.close();
@@ -480,31 +455,26 @@ public class TestSort extends LuceneTest
   /** Tests sorting on type float */
   public void testFloat() throws IOException {
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new FloatDocValuesField("value", 30.1F));
-    doc.add(newStringField("value", "30.1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", -1.3F));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", 4.2F));
-    doc.add(newStringField("value", "4.2", Field.Store.YES));
-    writer.addDocument(doc);
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);    
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(float value : new float[] {30.1F, -1.3F, 4.2F}) {
+      Document2 doc = writer.newDocument();
+      doc.addFloat("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
     // numeric order
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("30.1", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
@@ -513,62 +483,56 @@ public class TestSort extends LuceneTest
   /** Tests sorting on type float in reverse */
   public void testFloatReverse() throws IOException {
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new FloatDocValuesField("value", 30.1F));
-    doc.add(newStringField("value", "30.1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", -1.3F));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", 4.2F));
-    doc.add(newStringField("value", "4.2", Field.Store.YES));
-    writer.addDocument(doc);
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);    
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(float value : new float[] {30.1F, -1.3F, 4.2F}) {
+      Document2 doc = writer.newDocument();
+      doc.addFloat("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // reverse numeric order
-    assertEquals("30.1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[2].doc).get("value"));
+    // 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"));
 
     ir.close();
     dir.close();
   }
   
   /** Tests sorting on type float with a missing value */
-  public void testFloatMissing() throws IOException {
+  public void testFloatMissingDefault() throws IOException {
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", -1.3F));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", 4.2F));
-    doc.add(newStringField("value", "4.2", Field.Store.YES));
-    writer.addDocument(doc);
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);    
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    writer.addDocument(writer.newDocument());
+    for(float value : new float[] {-1.3F, 4.2F}) {
+      Document2 doc = writer.newDocument();
+      doc.addFloat("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.FLOAT));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as 0
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[2].doc).get("value"));
+
+    // 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"));
+    assertNull(searcher.doc(td.scoreDocs[2].doc).getString("value"));
 
     ir.close();
     dir.close();
@@ -577,31 +541,28 @@ public class TestSort extends LuceneTest
   /** Tests sorting on type float, specifying the missing value should be treated as Float.MAX_VALUE */
   public void testFloatMissingLast() throws IOException {
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", -1.3F));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new FloatDocValuesField("value", 4.2F));
-    doc.add(newStringField("value", "4.2", Field.Store.YES));
-    writer.addDocument(doc);
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);    
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setSortMissingLast("value");
+    writer.addDocument(writer.newDocument());
+    for(float value : new float[] {-1.3F, 4.2F}) {
+      Document2 doc = writer.newDocument();
+      doc.addFloat("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortField("value", SortField.Type.FLOAT);
-    sortField.setMissingValue(Float.MAX_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
-    // null is treated as Float.MAX_VALUE
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[2].doc).get("value"));
+
+    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"));
 
     ir.close();
     dir.close();
@@ -611,35 +572,26 @@ public class TestSort extends LuceneTest
   public void testDouble() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 30.1));
-    doc.add(newStringField("value", "30.1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", -1.3));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333333));
-    doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333332));
-    doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+
+    for(double value : new double[] {30.1, -1.3, 4.2333333333333, 4.2333333333332}) {
+      Document2 doc = writer.newDocument();
+      doc.addDouble("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
     // numeric order
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[2].doc).get("value"));
-    assertEquals("30.1", searcher.doc(td.scoreDocs[3].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
@@ -649,26 +601,24 @@ public class TestSort extends LuceneTest
   public void testDoubleSignedZero() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new DoubleDocValuesField("value", +0D));
-    doc.add(newStringField("value", "+0", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", -0D));
-    doc.add(newStringField("value", "-0", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    for(double value : new double[] {+0D, -0D}) {
+      Document2 doc = writer.newDocument();
+      doc.addDouble("value", value);
+      writer.addDocument(doc);
+    }
+
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
     // numeric order
-    assertEquals("-0", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("+0", searcher.doc(td.scoreDocs[1].doc).get("value"));
+    assertEquals(-0D, searcher.doc(td.scoreDocs[0].doc).getDouble("value").doubleValue(), 0.0D);
+    assertEquals(+0D, searcher.doc(td.scoreDocs[1].doc).getDouble("value").doubleValue(), 0.0D);
 
     ir.close();
     dir.close();
@@ -678,71 +628,56 @@ public class TestSort extends LuceneTest
   public void testDoubleReverse() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 30.1));
-    doc.add(newStringField("value", "30.1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", -1.3));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333333));
-    doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333332));
-    doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+
+    for(double value : new double[] {30.1, -1.3, 4.2333333333333, 4.2333333333332}) {
+      Document2 doc = writer.newDocument();
+      doc.addDouble("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE, true));
+    Sort sort = fieldTypes.newSort("value", true);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
     // numeric order
-    assertEquals("30.1", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[2].doc).get("value"));
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[3].doc).get("value"));
+    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"));
 
     ir.close();
     dir.close();
   }
   
   /** Tests sorting on type double with a missing value */
-  public void testDoubleMissing() throws IOException {
+  public void testDoubleMissingDefault() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", -1.3));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333333));
-    doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333332));
-    doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    writer.addDocument(writer.newDocument());
+    for(double value : new double[] {-1.3, 4.2333333333333, 4.2333333333332}) {
+      Document2 doc = writer.newDocument();
+      doc.addDouble("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortField("value", SortField.Type.DOUBLE));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
-    // null treated as a 0
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertNull(searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[2].doc).get("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[3].doc).get("value"));
+
+    // 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"));
+    assertNull(searcher.doc(td.scoreDocs[3].doc).get("value"));
 
     ir.close();
     dir.close();
@@ -752,34 +687,25 @@ public class TestSort extends LuceneTest
   public void testDoubleMissingLast() throws IOException {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", -1.3));
-    doc.add(newStringField("value", "-1.3", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333333));
-    doc.add(newStringField("value", "4.2333333333333", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new DoubleDocValuesField("value", 4.2333333333332));
-    doc.add(newStringField("value", "4.2333333333332", Field.Store.YES));
-    writer.addDocument(doc);
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    writer.addDocument(writer.newDocument());
+    for(double value : new double[] {-1.3, 4.2333333333333, 4.2333333333332}) {
+      Document2 doc = writer.newDocument();
+      doc.addDouble("value", value);
+      writer.addDocument(doc);
+    }
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortField("value", SortField.Type.DOUBLE);
-    sortField.setMissingValue(Double.MAX_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(4, td.totalHits);
-    // null treated as Double.MAX_VALUE
-    assertEquals("-1.3", searcher.doc(td.scoreDocs[0].doc).get("value"));
-    assertEquals("4.2333333333332", searcher.doc(td.scoreDocs[1].doc).get("value"));
-    assertEquals("4.2333333333333", searcher.doc(td.scoreDocs[2].doc).get("value"));
+
+    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"));
     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=1638066&r1=1638065&r2=1638066&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 Tue Nov 11 11:24:51 2014
@@ -21,9 +21,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Comparator;
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.NumericDocValuesField;
+import org.apache.lucene.document.Document2;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
@@ -43,22 +41,22 @@ public class TestSortRescorer extends Lu
     dir = newDirectory();
     RandomIndexWriter iw = new RandomIndexWriter(random(), dir);
     
-    Document doc = new Document();
-    doc.add(newStringField("id", "1", Field.Store.YES));
-    doc.add(newTextField("body", "some contents and more contents", Field.Store.NO));
-    doc.add(new NumericDocValuesField("popularity", 5));
+    Document2 doc = iw.newDocument();
+    doc.addUniqueAtom("id", "1");
+    doc.addLargeText("body", "some contents and more contents");
+    doc.addInt("popularity", 5);
     iw.addDocument(doc);
     
-    doc = new Document();
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    doc.add(newTextField("body", "another document with different contents", Field.Store.NO));
-    doc.add(new NumericDocValuesField("popularity", 20));
+    doc = iw.newDocument();
+    doc.addUniqueAtom("id", "2");
+    doc.addLargeText("body", "another document with different contents");
+    doc.addInt("popularity", 20);
     iw.addDocument(doc);
     
-    doc = new Document();
-    doc.add(newStringField("id", "3", Field.Store.YES));
-    doc.add(newTextField("body", "crappy contents", Field.Store.NO));
-    doc.add(new NumericDocValuesField("popularity", 2));
+    doc = iw.newDocument();
+    doc.addUniqueAtom("id", "3");
+    doc.addLargeText("body", "crappy contents");
+    doc.addInt("popularity", 2);
     iw.addDocument(doc);
     
     reader = iw.getReader();
@@ -116,16 +114,16 @@ public class TestSortRescorer extends Lu
     final int[] idToNum = new int[numDocs];
     int maxValue = TestUtil.nextInt(random(), 10, 1000000);
     for(int i=0;i<numDocs;i++) {
-      Document doc = new Document();
-      doc.add(newStringField("id", ""+i, Field.Store.YES));
+      Document2 doc = w.newDocument();
+      doc.addUniqueAtom("id", ""+i);
       int numTokens = TestUtil.nextInt(random(), 1, 10);
       StringBuilder b = new StringBuilder();
       for(int j=0;j<numTokens;j++) {
         b.append("a ");
       }
-      doc.add(newTextField("field", b.toString(), Field.Store.NO));
+      doc.addLargeText("field", b.toString());
       idToNum[i] = random().nextInt(maxValue);
-      doc.add(new NumericDocValuesField("num", idToNum[i]));
+      doc.addInt("num", idToNum[i]);
       w.addDocument(doc);
     }
     final IndexReader r = w.getReader();

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortedNumericSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortedNumericSortField.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortedNumericSortField.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortedNumericSortField.java Tue Nov 11 11:24:51 2014
@@ -17,16 +17,14 @@ package org.apache.lucene.search;
  * limitations under the License.
  */
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.SortedNumericDocValuesField;
+import org.apache.lucene.document.Document2;
+import org.apache.lucene.document.FieldTypes;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.MultiReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.NumericUtils;
 
 /** Simple tests for SortedNumericSortField */
 public class TestSortedNumericSortField extends LuceneTestCase {
@@ -67,15 +65,17 @@ public class TestSortedNumericSortField 
   
   public void testForward() throws Exception {
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 5));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 3));
-    doc.add(new SortedNumericDocValuesField("value", 7));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    RandomIndexWriter writer = new RandomIndexWriter(random(), dir);    
+    FieldTypes fieldTypes = writer.getFieldTypes();     
+    fieldTypes.setMultiValued("value");
+    Document2 doc = writer.newDocument();
+    doc.addInt("value", 5);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addInt("value", 3);
+    doc.addInt("value", 7);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
@@ -96,14 +96,16 @@ public class TestSortedNumericSortField 
   public void testReverse() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 3));
-    doc.add(new SortedNumericDocValuesField("value", 7));
-    doc.add(newStringField("id", "1", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 5));
-    doc.add(newStringField("id", "2", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("value");
+    Document2 doc = writer.newDocument();
+    doc.addInt("value", 3);
+    doc.addInt("value", 7);
+    doc.addUniqueAtom("id", "1");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addInt("value", 5);
+    doc.addUniqueAtom("id", "2");
     writer.addDocument(doc);
 
     IndexReader ir = writer.getReader();
@@ -125,25 +127,28 @@ public class TestSortedNumericSortField 
   public void testMissingFirst() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 5));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 3));
-    doc.add(new SortedNumericDocValuesField("value", 7));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("value");
+    fieldTypes.enableSorting("value");
+    fieldTypes.setSortMissingFirst("value");
+
+    Document2 doc = writer.newDocument();
+    doc.addInt("value", 5);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addInt("value", 3);
+    doc.addInt("value", 7);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
-    doc = new Document();
-    doc.add(newStringField("id", "3", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addUniqueAtom("id", "3");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortedNumericSortField("value", SortField.Type.INT);
-    sortField.setMissingValue(Integer.MIN_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
@@ -160,25 +165,25 @@ public class TestSortedNumericSortField 
   public void testMissingLast() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 5));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 3));
-    doc.add(new SortedNumericDocValuesField("value", 7));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("value");
+    Document2 doc = writer.newDocument();
+    doc.addInt("value", 5);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addInt("value", 3);
+    doc.addInt("value", 7);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
-    doc = new Document();
-    doc.add(newStringField("id", "3", Field.Store.YES));
+    doc = writer.newDocument();
+    doc.addUniqueAtom("id", "3");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    SortField sortField = new SortedNumericSortField("value", SortField.Type.INT);
-    sortField.setMissingValue(Integer.MAX_VALUE);
-    Sort sort = new Sort(sortField);
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(3, td.totalHits);
@@ -195,19 +200,20 @@ public class TestSortedNumericSortField 
   public void testSingleton() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 5));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", 3));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    Document2 doc = writer.newDocument();
+    doc.addInt("value", 5);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addInt("value", 3);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortedNumericSortField("value", SortField.Type.INT));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -222,20 +228,24 @@ public class TestSortedNumericSortField 
   public void testFloat() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.floatToSortableInt(-3f)));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.floatToSortableInt(-5f)));
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.floatToSortableInt(7f)));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("value");
+
+    Document2 doc = writer.newDocument();
+    doc.addFloat("value", -3f);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addFloat("value", -5f);
+    doc.addFloat("value", 7f);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortedNumericSortField("value", SortField.Type.FLOAT));
+    Sort sort = fieldTypes.newSort("value");
+    System.out.println("sort: " + sort);
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);
@@ -250,20 +260,23 @@ public class TestSortedNumericSortField 
   public void testDouble() throws Exception {
     Directory dir = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.doubleToSortableLong(-3d)));
-    doc.add(newStringField("id", "2", Field.Store.YES));
-    writer.addDocument(doc);
-    doc = new Document();
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.doubleToSortableLong(-5d)));
-    doc.add(new SortedNumericDocValuesField("value", NumericUtils.doubleToSortableLong(7d)));
-    doc.add(newStringField("id", "1", Field.Store.YES));
+    FieldTypes fieldTypes = writer.getFieldTypes();
+    fieldTypes.setMultiValued("value");
+
+    Document2 doc = writer.newDocument();
+    doc.addDouble("value", -3d);
+    doc.addUniqueAtom("id", "2");
+    writer.addDocument(doc);
+    doc = writer.newDocument();
+    doc.addDouble("value", -5d);
+    doc.addDouble("value", 7d);
+    doc.addUniqueAtom("id", "1");
     writer.addDocument(doc);
     IndexReader ir = writer.getReader();
     writer.close();
     
     IndexSearcher searcher = newSearcher(ir);
-    Sort sort = new Sort(new SortedNumericSortField("value", SortField.Type.DOUBLE));
+    Sort sort = fieldTypes.newSort("value");
 
     TopDocs td = searcher.search(new MatchAllDocsQuery(), 10, sort);
     assertEquals(2, td.totalHits);

Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java?rev=1638066&r1=1638065&r2=1638066&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java Tue Nov 11 11:24:51 2014
@@ -44,12 +44,12 @@ public class TestSubScorerFreqs extends 
     // make sure we have more than one segment occationally
     int num = atLeast(31);
     for (int i = 0; i < num; i++) {
-      Document doc = new Document();
-      doc.add(newTextField("f", "a b c d b c d c d d", Field.Store.NO));
+      Document2 doc = w.newDocument();
+      doc.addLargeText("f", "a b c d b c d c d d");
       w.addDocument(doc);
 
-      doc = new Document();
-      doc.add(newTextField("f", "a b c d", Field.Store.NO));
+      doc = w.newDocument();
+      doc.addLargeText("f", "a b c d");
       w.addDocument(doc);
     }