You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by cc...@apache.org on 2011/11/17 04:49:34 UTC

[Lucene.Net] svn commit: r1203041 [1/2] - in /incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk: src/core/ src/core/Analysis/Tokenattributes/ src/core/Index/ src/core/Search/ src/core/Store/ src/core/Support/ src/core/Util/ test/core/ test/core/Index/ test/core/...

Author: ccurrens
Date: Thu Nov 17 03:49:32 2011
New Revision: 1203041

URL: http://svn.apache.org/viewvc?rev=1203041&view=rev
Log:
updated tests and fixed core/test porting errors

Modified:
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Analysis/Tokenattributes/PayloadAttributeImpl.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/AssemblyInfo.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/FileDiffs.txt
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/BufferedDeletes.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexWriter.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/ParallelReader.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SegmentInfos.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/Term.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/FieldValueHitQueue.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searchable.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searcher.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/SortField.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/SimpleFSLockFactory.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Support/FileSupport.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Util/CloseableThreadLocal.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexWriter.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestParallelReader.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestCustomSearcherSort.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestSetNorm.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermRangeQuery.cs
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt
    incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Util/_TestUtil.cs

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Analysis/Tokenattributes/PayloadAttributeImpl.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Analysis/Tokenattributes/PayloadAttributeImpl.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Analysis/Tokenattributes/PayloadAttributeImpl.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Analysis/Tokenattributes/PayloadAttributeImpl.cs Thu Nov 17 03:49:32 2011
@@ -59,9 +59,16 @@ namespace Lucene.Net.Analysis.Tokenattri
 		
 		public override System.Object Clone()
 		{
-            PayloadAttributeImpl impl = new PayloadAttributeImpl();
-            impl.payload = new Payload(this.payload.data, this.payload.offset, this.payload.length);
-            return impl;
+		    var clone = (PayloadAttributeImpl) base.Clone();
+            if (payload != null)
+            {
+                clone.payload = (Payload) payload.Clone();
+            }
+		    return clone;
+            // TODO: This code use to be as below.  Any reason why?  the if(payload!=null) was missing...
+		    //PayloadAttributeImpl impl = new PayloadAttributeImpl();
+		    //impl.payload = new Payload(this.payload.data, this.payload.offset, this.payload.length);
+		    //return impl;
 		}
 		
 		public  override bool Equals(System.Object other)

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/AssemblyInfo.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/AssemblyInfo.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/AssemblyInfo.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/AssemblyInfo.cs Thu Nov 17 03:49:32 2011
@@ -36,7 +36,7 @@ using System.Runtime.CompilerServices;
 
 [assembly: CLSCompliant(true)]
 
-[assembly: AssemblyInformationalVersionAttribute("2.9.4")]
+[assembly: AssemblyInformationalVersionAttribute("3.0.3")]
 
 // for testing
 [assembly: InternalsVisibleTo("Lucene.Net.Test, PublicKey=002400000480000094000000060200000024000052534131000400000100010075a07ce602f88e" +

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/FileDiffs.txt
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/FileDiffs.txt?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/FileDiffs.txt (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/FileDiffs.txt Thu Nov 17 03:49:32 2011
@@ -162,7 +162,7 @@ index\
 	index\NormsWriterPerField.java - Text files are different
 	index\NormsWriterPerThread.java - Text files are different
 	index\package.html - IDENTICAL
-	index\ParallelReader.java - Text files are different
+	index\ParallelReader.java - DONE
 	index\Payload.java - Text files are different
 	index\PositionBasedTermVectorMapper.java - Text files are different
 	index\RawPostingList.java - IDENTICAL
@@ -352,8 +352,8 @@ search
 	ScoreDoc.java - Text files are different
 	ScoreDocComparator.java - Removed in 3.x
 	Scorer.java - Text files are different
-	Searchable.java - Text files are different
-	Searcher.java - Text files are different
+	Searchable.java - DONE
+	Searcher.java - DONE
 	Similarity.java - PORTED
 	SimilarityDelegator.java - PORTED
 	SingleTermEnum.java - PORTED

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/BufferedDeletes.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/BufferedDeletes.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/BufferedDeletes.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/BufferedDeletes.cs Thu Nov 17 03:49:32 2011
@@ -97,12 +97,12 @@ namespace Lucene.Net.Index
 			numTerms += in_Renamed.numTerms;
 			bytesUsed += in_Renamed.bytesUsed;
 		    foreach (KeyValuePair<Term, Num> term in in_Renamed.terms)
-		    {
-		        terms.Add(term);
+            {
+                terms[term.Key] = term.Value;
 		    }
             foreach (KeyValuePair<Query, int> term in in_Renamed.queries)
             {
-                queries.Add(term);
+                queries[term.Key] = term.Value;
             }
 
 			docIDs.AddRange(in_Renamed.docIDs);
@@ -134,7 +134,6 @@ namespace Lucene.Net.Index
 		{
 			lock (this)
 			{
-				
 				IDictionary<Term, Num> newDeleteTerms;
 				
 				// Remap delete-by-term
@@ -179,7 +178,7 @@ namespace Lucene.Net.Index
                     newDeleteQueries = new HashMap<Query, int>(queries.Count);
 					foreach(var entry in queries)
 					{
-						int num = (int)entry.Value;
+						int num = entry.Value;
 						newDeleteQueries[entry.Key] = mapper.Remap(num);
 					}
 				}

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexWriter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexWriter.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexWriter.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexWriter.cs Thu Nov 17 03:49:32 2011
@@ -4170,7 +4170,6 @@ namespace Lucene.Net.Index
 		{
 			lock (this)
 			{
-				
 				if (hitOOM)
 				{
 					throw new System.SystemException("this writer hit an OutOfMemoryError; cannot flush");

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/ParallelReader.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/ParallelReader.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/ParallelReader.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/ParallelReader.cs Thu Nov 17 03:49:32 2011
@@ -16,7 +16,9 @@
  */
 
 using System;
-
+using System.Collections.Generic;
+using System.Linq;
+using Lucene.Net.Support;
 using Document = Lucene.Net.Documents.Document;
 using FieldSelector = Lucene.Net.Documents.FieldSelector;
 using FieldSelectorResult = Lucene.Net.Documents.FieldSelectorResult;
@@ -43,12 +45,12 @@ namespace Lucene.Net.Index
 	/// </summary>
 	public class ParallelReader:IndexReader, System.ICloneable
 	{
-		private System.Collections.ArrayList readers = new System.Collections.ArrayList();
-		private System.Collections.IList decrefOnClose = new System.Collections.ArrayList(); // remember which subreaders to decRef on close
+        private List<IndexReader> readers = new List<IndexReader>();
+        private List<bool> decrefOnClose = new List<bool>(); // remember which subreaders to decRef on close
 		internal bool incRefReaders = false;
-		private System.Collections.SortedList fieldToReader = new System.Collections.SortedList();
-		private System.Collections.IDictionary readerToFields = new System.Collections.Hashtable();
-		private System.Collections.IList storedFieldReaders = new System.Collections.ArrayList();
+		private SortedDictionary<string, IndexReader> fieldToReader = new SortedDictionary<string, IndexReader>();
+		private IDictionary<IndexReader, ICollection<string>> readerToFields = new HashMap<IndexReader, ICollection<string>>();
+        private List<IndexReader> storedFieldReaders = new List<IndexReader>();
 		
 		private int maxDoc;
 		private int numDocs;
@@ -107,14 +109,13 @@ namespace Lucene.Net.Index
 			if (reader.NumDocs() != numDocs)
 				throw new System.ArgumentException("All readers must have same numDocs: " + numDocs + "!=" + reader.NumDocs());
 			
-			System.Collections.Generic.ICollection<string> fields = reader.GetFieldNames(IndexReader.FieldOption.ALL);
+			ICollection<string> fields = reader.GetFieldNames(IndexReader.FieldOption.ALL);
 			readerToFields[reader] = fields;
-			System.Collections.IEnumerator i = fields.GetEnumerator();
-			while (i.MoveNext())
+			foreach(var field in fields)
 			{
 				// update fieldToReader map
-				System.String field = (System.String) i.Current;
-				if (fieldToReader[field] == null)
+                // Do a containskey firt to mimic java behavior
+				if (!fieldToReader.ContainsKey(field) || fieldToReader[field] == null)
 					fieldToReader[field] = reader;
 			}
 			
@@ -172,15 +173,14 @@ namespace Lucene.Net.Index
 			EnsureOpen();
 			
 			bool reopened = false;
-			System.Collections.IList newReaders = new System.Collections.ArrayList();
+            IList<IndexReader> newReaders = new List<IndexReader>();
 			
 			bool success = false;
 			
 			try
 			{
-				for (int i = 0; i < readers.Count; i++)
+				foreach(var oldReader in readers)
 				{
-					IndexReader oldReader = (IndexReader) readers[i];
 					IndexReader newReader = null;
 					if (doClone)
 					{
@@ -206,7 +206,7 @@ namespace Lucene.Net.Index
 				{
 					for (int i = 0; i < newReaders.Count; i++)
 					{
-						IndexReader r = (IndexReader) newReaders[i];
+						IndexReader r = newReaders[i];
 						if (r != readers[i])
 						{
 							try
@@ -224,12 +224,12 @@ namespace Lucene.Net.Index
 			
 			if (reopened)
 			{
-				System.Collections.IList newDecrefOnClose = new System.Collections.ArrayList();
+                List<bool> newDecrefOnClose = new List<bool>();
 				ParallelReader pr = new ParallelReader();
 				for (int i = 0; i < readers.Count; i++)
 				{
-					IndexReader oldReader = (IndexReader) readers[i];
-					IndexReader newReader = (IndexReader) newReaders[i];
+					IndexReader oldReader = readers[i];
+					IndexReader newReader = newReaders[i];
 					if (newReader == oldReader)
 					{
 						newDecrefOnClose.Add(true);
@@ -278,16 +278,16 @@ namespace Lucene.Net.Index
 		{
 			// Don't call ensureOpen() here (it could affect performance)
 			if (readers.Count > 0)
-				return ((IndexReader) readers[0]).IsDeleted(n);
+				return readers[0].IsDeleted(n);
 			return false;
 		}
 		
 		// delete in all readers
 		protected internal override void  DoDelete(int n)
 		{
-			for (int i = 0; i < readers.Count; i++)
+			foreach(var reader in readers)
 			{
-				((IndexReader) readers[i]).DeleteDocument(n);
+				reader.DeleteDocument(n);
 			}
 			hasDeletions = true;
 		}
@@ -295,9 +295,9 @@ namespace Lucene.Net.Index
 		// undeleteAll in all readers
 		protected internal override void  DoUndeleteAll()
 		{
-			for (int i = 0; i < readers.Count; i++)
+			foreach(var reader in readers)
 			{
-				((IndexReader) readers[i]).UndeleteAll();
+				reader.UndeleteAll();
 			}
 			hasDeletions = false;
 		}
@@ -307,17 +307,15 @@ namespace Lucene.Net.Index
 		{
 			EnsureOpen();
 			Document result = new Document();
-			for (int i = 0; i < storedFieldReaders.Count; i++)
+			foreach(IndexReader reader in storedFieldReaders)
 			{
-				IndexReader reader = (IndexReader) storedFieldReaders[i];
-				
 				bool include = (fieldSelector == null);
 				if (!include)
 				{
-					System.Collections.IEnumerator it = ((System.Collections.ICollection) readerToFields[reader]).GetEnumerator();
-					while (it.MoveNext())
+				    var fields = readerToFields[reader];
+					foreach(var field in fields)
 					{
-						if (fieldSelector.Accept((System.String) it.Current) != FieldSelectorResult.NO_LOAD)
+                        if (fieldSelector.Accept(field) != FieldSelectorResult.NO_LOAD)
 						{
 							include = true;
 							break;
@@ -326,10 +324,10 @@ namespace Lucene.Net.Index
 				}
 				if (include)
 				{
-					System.Collections.IEnumerator fieldIterator = reader.Document(n, fieldSelector).GetFields().GetEnumerator();
-					while (fieldIterator.MoveNext())
+				    var fields = reader.Document(n, fieldSelector).GetFields();
+					foreach(var field in fields)
 					{
-						result.Add((Fieldable) fieldIterator.Current);
+                        result.Add(field);
 					}
 				}
 			}
@@ -340,24 +338,23 @@ namespace Lucene.Net.Index
 		public override TermFreqVector[] GetTermFreqVectors(int n)
 		{
 			EnsureOpen();
-			System.Collections.ArrayList results = new System.Collections.ArrayList();
-            System.Collections.IEnumerator i = new System.Collections.Hashtable(fieldToReader).GetEnumerator();
-			while (i.MoveNext())
-			{
-				System.Collections.DictionaryEntry e = (System.Collections.DictionaryEntry) i.Current;
-				System.String field = (System.String) e.Key;
-				IndexReader reader = (IndexReader) e.Value;
+			IList<TermFreqVector> results = new List<TermFreqVector>();
+            foreach(var e in fieldToReader)
+			{
+				System.String field = e.Key;
+				IndexReader reader = e.Value;
+
 				TermFreqVector vector = reader.GetTermFreqVector(n, field);
 				if (vector != null)
 					results.Add(vector);
 			}
-			return (TermFreqVector[]) results.ToArray(typeof(TermFreqVector));
+			return results.ToArray();
 		}
 		
 		public override TermFreqVector GetTermFreqVector(int n, System.String field)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
+			IndexReader reader = (fieldToReader[field]);
 			return reader == null?null:reader.GetTermFreqVector(n, field);
 		}
 		
@@ -365,7 +362,7 @@ namespace Lucene.Net.Index
 		public override void  GetTermFreqVector(int docNumber, System.String field, TermVectorMapper mapper)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
+			IndexReader reader = (fieldToReader[field]);
 			if (reader != null)
 			{
 				reader.GetTermFreqVector(docNumber, field, mapper);
@@ -376,12 +373,10 @@ namespace Lucene.Net.Index
 		{
 			EnsureOpen();
 
-            System.Collections.IEnumerator i = new System.Collections.Hashtable(fieldToReader).GetEnumerator();
-			while (i.MoveNext())
+            foreach(var e in fieldToReader)
 			{
-				System.Collections.DictionaryEntry e = (System.Collections.DictionaryEntry) i.Current;
-				System.String field = (System.String) e.Key;
-				IndexReader reader = (IndexReader) e.Value;
+				System.String field = e.Key;
+				IndexReader reader = e.Value;
 				reader.GetTermFreqVector(docNumber, field, mapper);
 			}
 		}
@@ -389,28 +384,28 @@ namespace Lucene.Net.Index
 		public override bool HasNorms(System.String field)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
-			return reader == null?false:reader.HasNorms(field);
+			IndexReader reader = fieldToReader[field];
+		    return reader != null && reader.HasNorms(field);
 		}
 		
 		public override byte[] Norms(System.String field)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
+			IndexReader reader = fieldToReader[field];
 			return reader == null?null:reader.Norms(field);
 		}
 		
 		public override void  Norms(System.String field, byte[] result, int offset)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
+			IndexReader reader = fieldToReader[field];
 			if (reader != null)
 				reader.Norms(field, result, offset);
 		}
 		
 		protected internal override void  DoSetNorm(int n, System.String field, byte value_Renamed)
 		{
-			IndexReader reader = ((IndexReader) fieldToReader[field]);
+			IndexReader reader = fieldToReader[field];
 			if (reader != null)
 				reader.DoSetNorm(n, field, value_Renamed);
 		}
@@ -430,7 +425,7 @@ namespace Lucene.Net.Index
 		public override int DocFreq(Term term)
 		{
 			EnsureOpen();
-			IndexReader reader = ((IndexReader) fieldToReader[term.Field()]);
+			IndexReader reader = fieldToReader[term.Field()];
 			return reader == null?0:reader.DocFreq(term);
 		}
 		
@@ -461,9 +456,9 @@ namespace Lucene.Net.Index
 		/// <summary> Checks recursively if all subreaders are up to date. </summary>
 		public override bool IsCurrent()
 		{
-			for (int i = 0; i < readers.Count; i++)
-			{
-				if (!((IndexReader) readers[i]).IsCurrent())
+			foreach(var reader in readers)
+            {
+				if (!reader.IsCurrent())
 				{
 					return false;
 				}
@@ -476,16 +471,16 @@ namespace Lucene.Net.Index
 		/// <summary> Checks recursively if all subindexes are optimized </summary>
 		public override bool IsOptimized()
 		{
-			for (int i = 0; i < readers.Count; i++)
-			{
-				if (!((IndexReader) readers[i]).IsOptimized())
-				{
-					return false;
-				}
-			}
-			
-			// all subindexes are optimized
-			return true;
+            foreach (var reader in readers)
+            {
+                if (!reader.IsOptimized())
+                {
+                    return false;
+                }
+            }
+
+            // all subindexes are optimized
+            return true;
 		}
 		
 		
@@ -499,13 +494,13 @@ namespace Lucene.Net.Index
 		// for testing
 		public /*internal*/ virtual IndexReader[] GetSubReaders()
 		{
-			return (IndexReader[]) readers.ToArray(typeof(IndexReader));
+			return readers.ToArray();
 		}
 
-        protected internal override void DoCommit(System.Collections.Generic.IDictionary<string, string> commitUserData)
+        protected internal override void DoCommit(IDictionary<string, string> commitUserData)
 		{
-			for (int i = 0; i < readers.Count; i++)
-				((IndexReader) readers[i]).Commit(commitUserData);
+			foreach(var reader in readers)
+				reader.Commit(commitUserData);
 		}
 		
 		protected internal override void  DoClose()
@@ -514,13 +509,13 @@ namespace Lucene.Net.Index
 			{
 				for (int i = 0; i < readers.Count; i++)
 				{
-					if (((System.Boolean) decrefOnClose[i]))
+					if (decrefOnClose[i])
 					{
-						((IndexReader) readers[i]).DecRef();
+						readers[i].DecRef();
 					}
 					else
 					{
-						((IndexReader) readers[i]).Close();
+						readers[i].Close();
 					}
 				}
 			}
@@ -531,12 +526,11 @@ namespace Lucene.Net.Index
         public override System.Collections.Generic.ICollection<string> GetFieldNames(IndexReader.FieldOption fieldNames)
 		{
 			EnsureOpen();
-            System.Collections.Generic.List<string> fieldSet = new System.Collections.Generic.List<string>();
-			for (int i = 0; i < readers.Count; i++)
+            ISet<string> fieldSet = new HashSet<string>();
+			foreach(var reader in readers)
 			{
-				IndexReader reader = ((IndexReader) readers[i]);
-				System.Collections.Generic.ICollection<string> names = reader.GetFieldNames(fieldNames);
-                fieldSet.AddRange(names);
+				ICollection<string> names = reader.GetFieldNames(fieldNames);
+                fieldSet.UnionWith(names);
 			}
 			return fieldSet;
 		}
@@ -557,7 +551,7 @@ namespace Lucene.Net.Index
 				
 			}
 			private System.String field;
-			private System.Collections.IEnumerator fieldIterator;
+			private IEnumerator<string> fieldIterator;
 			private TermEnum termEnum;
 			
 			public ParallelTermEnum(ParallelReader enclosingInstance)
@@ -565,7 +559,7 @@ namespace Lucene.Net.Index
 				InitBlock(enclosingInstance);
 				try
 				{
-					field = ((System.String) Enclosing_Instance.fieldToReader.GetKey(0));
+					field = Enclosing_Instance.fieldToReader.Keys.First();
 				}
 				catch (ArgumentOutOfRangeException e)
 				{
@@ -573,14 +567,14 @@ namespace Lucene.Net.Index
 					return;
 				}
 				if (field != null)
-					termEnum = ((IndexReader) Enclosing_Instance.fieldToReader[field]).Terms();
+					termEnum = Enclosing_Instance.fieldToReader[field].Terms();
 			}
 			
 			public ParallelTermEnum(ParallelReader enclosingInstance, Term term)
 			{
 				InitBlock(enclosingInstance);
 				field = term.Field();
-				IndexReader reader = ((IndexReader) Enclosing_Instance.fieldToReader[field]);
+				IndexReader reader = Enclosing_Instance.fieldToReader[field];
 				if (reader != null)
 					termEnum = reader.Terms(term);
 			}
@@ -599,30 +593,20 @@ namespace Lucene.Net.Index
 				// find the next field with terms, if any
 				if (fieldIterator == null)
 				{
-                    System.Collections.Comparer comparer = System.Collections.Comparer.Default;
-                    System.Collections.SortedList newList = new System.Collections.SortedList();
-                    if (Enclosing_Instance.fieldToReader != null)
+                    var newList = new List<string>();  
+                    if (Enclosing_Instance.fieldToReader != null && Enclosing_Instance.fieldToReader.Count > 0)
                     {
-                        if (Enclosing_Instance.fieldToReader.Count > 0)
-                        {
-                            int index = 0;
-                            while (comparer.Compare(Enclosing_Instance.fieldToReader.GetKey(index), field) < 0)
-                                index++;
-                            for (; index < Enclosing_Instance.fieldToReader.Count; index++)
-                            {
-                                newList.Add(Enclosing_Instance.fieldToReader.GetKey(index), Enclosing_Instance.fieldToReader[Enclosing_Instance.fieldToReader.GetKey(index)]);
-                            }
-                        }
+                        var comparer = Enclosing_Instance.fieldToReader.Comparer;
+                        foreach(var entry in Enclosing_Instance.fieldToReader.Keys.Where(x => comparer.Compare(x, field) >= 0))
+                            newList.Add(entry);
                     }
 
-                    fieldIterator = newList.Keys.GetEnumerator();
-                    fieldIterator.MoveNext();
-					System.Object generatedAux = fieldIterator.Current; // Skip field to get next one
+                    fieldIterator = newList.Skip(1).GetEnumerator(); // Skip field to get next one
 				}
 				while (fieldIterator.MoveNext())
 				{
-					field = ((System.String) fieldIterator.Current);
-					termEnum = ((IndexReader) Enclosing_Instance.fieldToReader[field]).Terms(new Term(field));
+					field = fieldIterator.Current;
+					termEnum = Enclosing_Instance.fieldToReader[field].Terms(new Term(field));
 					Term term = termEnum.Term();
 					if (term != null && (System.Object) term.Field() == (System.Object) field)
 						return true;
@@ -681,10 +665,12 @@ namespace Lucene.Net.Index
 			public ParallelTermDocs(ParallelReader enclosingInstance, Term term)
 			{
 				InitBlock(enclosingInstance);
-				if (term == null)
-					termDocs = (Enclosing_Instance.readers.Count == 0)?null:((IndexReader) Enclosing_Instance.readers[0]).TermDocs(null);
-				else
-					Seek(term);
+                if (term == null)
+                    termDocs = (Enclosing_Instance.readers.Count == 0)
+                                   ? null
+                                   : Enclosing_Instance.readers[0].TermDocs(null);
+                else
+                    Seek(term);
 			}
 			
 			public virtual int Doc()
@@ -698,7 +684,7 @@ namespace Lucene.Net.Index
 			
 			public virtual void  Seek(Term term)
 			{
-				IndexReader reader = ((IndexReader) Enclosing_Instance.fieldToReader[term.Field()]);
+				IndexReader reader = Enclosing_Instance.fieldToReader[term.Field()];
 				termDocs = reader != null?reader.TermDocs(term):null;
 			}
 			
@@ -766,7 +752,7 @@ namespace Lucene.Net.Index
 			
 			public override void  Seek(Term term)
 			{
-				IndexReader reader = ((IndexReader) Enclosing_Instance.fieldToReader[term.Field()]);
+				IndexReader reader = Enclosing_Instance.fieldToReader[term.Field()];
 				termDocs = reader != null?reader.TermPositions(term):null;
 			}
 			

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SegmentInfos.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SegmentInfos.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SegmentInfos.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SegmentInfos.cs Thu Nov 17 03:49:32 2011
@@ -127,7 +127,7 @@ namespace Lucene.Net.Index
 		// or wrote; this is normally the same as generation except if
 		// there was an IOException that had interrupted a commit
 
-        private System.Collections.Generic.IDictionary<string, string> userData = new System.Collections.Generic.Dictionary<string, string>(); // Opaque Map<String, String> that user can specify during IndexWriter.commit
+        private IDictionary<string, string> userData = new HashMap<string, string>(); // Opaque Map<String, String> that user can specify during IndexWriter.commit
 		
 		/// <summary> If non-null, information about loading segments_N files</summary>
 		/// <seealso cref="SetInfoStream">
@@ -315,20 +315,20 @@ namespace Lucene.Net.Index
 					}
 					else if (0 != input.ReadByte())
 					{
-                        // TODO: In java, this is a read-only dictionary, probably for a reason, though
-                        //       I can't see immediately why.  We'd have to roll our own, I can't find
-                        //       and equivelant in the BCL
-                        userData = new System.Collections.Generic.Dictionary<string,string>();
+                        // TODO: Should be read-only map
+                        userData = new HashMap<string,string>();
 						userData.Add("userData", input.ReadString());
 					}
 					else
 					{
-                        userData = new System.Collections.Generic.Dictionary<string, string>();
+                        // TODO: Should be empty read-only map
+                        userData = new HashMap<string, string>();
 					}
 				}
 				else
 				{
-                    userData = new System.Collections.Generic.Dictionary<string, string>();
+                    // TODO: Should be empty read-only map
+                    userData = new HashMap<string, string>();
 				}
 				
 				if (format <= FORMAT_CHECKSUM)
@@ -1037,7 +1037,7 @@ namespace Lucene.Net.Index
 		{
 			if (data == null)
 			{
-				userData = new System.Collections.Generic.Dictionary<string,string>();
+			    userData = new HashMap<string, string>();
 			}
 			else
 			{

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/Term.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/Term.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/Term.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/Term.cs Thu Nov 17 03:49:32 2011
@@ -30,7 +30,7 @@ namespace Lucene.Net.Index
 	/// </summary>
 	
 	[Serializable]
-    public sealed class Term : System.IComparable
+    public sealed class Term : System.IComparable<Term>
 	{
 		internal System.String field;
 		internal System.String text;

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/FieldValueHitQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/FieldValueHitQueue.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/FieldValueHitQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/FieldValueHitQueue.cs Thu Nov 17 03:49:32 2011
@@ -29,14 +29,8 @@ namespace Lucene.Net.Search
 	/// incompatible ways in the next release.
 	/// 
 	/// </summary>
-	/// <since> 2.9
-	/// </since>
-	/// <version>  $Id:
-	/// </version>
-	/// <seealso cref="Searcher.Search(Query,Filter,int,Sort)">
-	/// </seealso>
-	/// <seealso cref="FieldCache">
-	/// </seealso>
+	/// <seealso cref="Searcher.Search(Query,Filter,int,Sort)"></seealso>
+	/// <seealso cref="FieldCache"></seealso>
 	public abstract class FieldValueHitQueue : PriorityQueue<FieldValueHitQueue.Entry>
 	{
         // had to change from internal to public, due to public accessability of FieldValueHitQueue
@@ -120,9 +114,6 @@ namespace Lucene.Net.Search
 				{
 					SortField field = fields[i];
 					
-					// AUTO is resolved before we are called
-					System.Diagnostics.Debug.Assert(field.GetType() != SortField.AUTO);
-					
 					reverseMul[i] = field.reverse?- 1:1;
 					comparators[i] = field.GetComparator(size, i);
 				}

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searchable.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searchable.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searchable.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searchable.cs Thu Nov 17 03:49:32 2011
@@ -43,31 +43,6 @@ namespace Lucene.Net.Search
 	/// </summary>
 	public interface Searchable
 	{
-		
-		/// <summary>Lower-level search API.
-		/// 
-		/// <p/><see cref="HitCollector.Collect(int,float)" /> is called for every non-zero
-		/// scoring document.
-		/// <br/>HitCollector-based access to remote indexes is discouraged.
-		/// 
-		/// <p/>Applications should only use this if they need <i>all</i> of the
-		/// matching documents.  The high-level search API (<see cref="Searcher.Search(Query)" />)
-		/// is usually more efficient, as it skips
-		/// non-high-scoring hits.
-		/// 
-		/// </summary>
-		/// <param name="weight">to match documents
-		/// </param>
-		/// <param name="filter">if non-null, used to permit documents to be collected.
-		/// </param>
-		/// <param name="results">to receive hits
-		/// </param>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> use <see cref="Search(Weight, Filter, Collector)" /> instead.
-		/// </deprecated>
-        [Obsolete("use Search(Weight, Filter, Collector) instead.")]
-		void  Search(Weight weight, Filter filter, HitCollector results);
-		
 		/// <summary> Lower-level search API.
 		/// 
 		/// <p/>
@@ -76,7 +51,7 @@ namespace Lucene.Net.Search
 		/// 
 		/// <p/>
 		/// Applications should only use this if they need <i>all</i> of the matching
-		/// documents. The high-level search API (<see cref="Searcher.Search(Query)" />) is
+		/// documents. The high-level search API (<see cref="Searcher.Search(Query,int)" />) is
 		/// usually more efficient, as it skips non-high-scoring hits.
 		/// 
 		/// </summary>
@@ -91,7 +66,7 @@ namespace Lucene.Net.Search
 		
 		/// <summary>Frees resources associated with this Searcher.
 		/// Be careful not to call this method while you are still using objects
-		/// like <see cref="Hits" />.
+		/// that reference this searchable
 		/// </summary>
 		void  Close();
 		
@@ -120,8 +95,8 @@ namespace Lucene.Net.Search
 		/// 
 		/// <p/>Called by <see cref="Hits" />.
 		/// 
-		/// <p/>Applications should usually call <see cref="Searcher.Search(Query)" /> or
-		/// <see cref="Searcher.Search(Query,Filter)" /> instead.
+		/// <p/>Applications should usually call <see cref="Searcher.Search(Query, int)" /> or
+		/// <see cref="Searcher.Search(Query,Filter,int)" /> instead.
 		/// </summary>
 		/// <throws>  BooleanQuery.TooManyClauses </throws>
 		TopDocs Search(Weight weight, Filter filter, int n);

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searcher.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searcher.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/Searcher.cs Thu Nov 17 03:49:32 2011
@@ -16,7 +16,7 @@
  */
 
 using System;
-
+using Lucene.Net.Documents;
 using Document = Lucene.Net.Documents.Document;
 using CorruptIndexException = Lucene.Net.Index.CorruptIndexException;
 using Term = Lucene.Net.Index.Term;
@@ -42,56 +42,6 @@ namespace Lucene.Net.Search
 			similarity = Similarity.GetDefault();
 		}
 		
-		/// <summary>Returns the documents matching <c>query</c>. </summary>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> Hits will be removed in Lucene 3.0. Use
-		/// <see cref="Search(Query, Filter, int)" /> instead.
-		/// </deprecated>
-        [Obsolete("Hits will be removed in Lucene 3.0. Use Search(Query, Filter, int) instead")]
-		public Hits Search(Query query)
-		{
-			return Search(query, (Filter) null);
-		}
-		
-		/// <summary>Returns the documents matching <c>query</c> and
-		/// <c>filter</c>.
-		/// </summary>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> Hits will be removed in Lucene 3.0. Use
-		/// <see cref="Search(Query, Filter, int)" /> instead.
-		/// </deprecated>
-        [Obsolete("Hits will be removed in Lucene 3.0. Use Search(Query, Filter, int) instead")]
-		public virtual Hits Search(Query query, Filter filter)
-		{
-			return new Hits(this, query, filter);
-		}
-		
-		/// <summary>Returns documents matching <c>query</c> sorted by
-		/// <c>sort</c>.
-		/// </summary>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> Hits will be removed in Lucene 3.0. Use 
-		/// <see cref="Search(Query, Filter, int, Sort)" /> instead.
-		/// </deprecated>
-        [Obsolete("Hits will be removed in Lucene 3.0. Use Search(Query, Filter, int, Sort) instead")]
-		public virtual Hits Search(Query query, Sort sort)
-		{
-			return new Hits(this, query, null, sort);
-		}
-		
-		/// <summary>Returns documents matching <c>query</c> and <c>filter</c>,
-		/// sorted by <c>sort</c>.
-		/// </summary>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> Hits will be removed in Lucene 3.0. Use 
-		/// <see cref="Search(Query, Filter, int, Sort)" /> instead.
-		/// </deprecated>
-        [Obsolete("Hits will be removed in Lucene 3.0. Use Search(Query, Filter, int, Sort) instead")]
-		public virtual Hits Search(Query query, Filter filter, Sort sort)
-		{
-			return new Hits(this, query, filter, sort);
-		}
-		
 		/// <summary>Search implementation with arbitrary sorting.  Finds
 		/// the top <c>n</c> hits for <c>query</c>, applying
 		/// <c>filter</c> if non-null, and sorting the hits by the criteria in
@@ -109,28 +59,6 @@ namespace Lucene.Net.Search
 		
 		/// <summary>Lower-level search API.
 		/// 
-		/// <p/><see cref="HitCollector.Collect(int,float)" /> is called for every matching
-		/// document.
-		/// 
-		/// <p/>Applications should only use this if they need <i>all</i> of the
-		/// matching documents.  The high-level search API (<see cref="Searcher.Search(Query)" />)
-		/// is usually more efficient, as it skips
-		/// non-high-scoring hits.
-		/// <p/>Note: The <c>score</c> passed to this method is a raw score.
-		/// In other words, the score will not necessarily be a float whose value is
-		/// between 0 and 1.
-		/// </summary>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> use <see cref="Search(Query, Collector)" /> instead.
-		/// </deprecated>
-        [Obsolete("use Search(Query, Collector) instead.")]
-		public virtual void  Search(Query query, HitCollector results)
-		{
-			Search(CreateWeight(query), null, new HitCollectorWrapper(results));
-		}
-		
-		/// <summary>Lower-level search API.
-		/// 
 		/// <p/><see cref="Collector.Collect(int)" /> is called for every matching document.
 		/// 
 		/// <p/>Applications should only use this if they need <i>all</i> of the matching
@@ -148,33 +76,6 @@ namespace Lucene.Net.Search
 		
 		/// <summary>Lower-level search API.
 		/// 
-		/// <p/><see cref="HitCollector.Collect(int,float)" /> is called for every matching
-		/// document.
-		/// <br/>HitCollector-based access to remote indexes is discouraged.
-		/// 
-		/// <p/>Applications should only use this if they need <i>all</i> of the
-		/// matching documents.  The high-level search API (<see cref="Searcher.Search(Query, Filter, int)" />)
-		/// is usually more efficient, as it skips
-		/// non-high-scoring hits.
-		/// 
-		/// </summary>
-		/// <param name="query">to match documents
-		/// </param>
-		/// <param name="filter">if non-null, used to permit documents to be collected.
-		/// </param>
-		/// <param name="results">to receive hits
-		/// </param>
-		/// <throws>  BooleanQuery.TooManyClauses </throws>
-		/// <deprecated> use <see cref="Search(Query, Filter, Collector)" /> instead.
-		/// </deprecated>
-        [Obsolete("use Search(Query, Filter, Collector) instead.")]
-		public virtual void  Search(Query query, Filter filter, HitCollector results)
-		{
-			Search(CreateWeight(query), filter, new HitCollectorWrapper(results));
-		}
-		
-		/// <summary>Lower-level search API.
-		/// 
 		/// <p/><see cref="Collector.Collect(int)" /> is called for every matching
 		/// document.
 		/// <br/>Collector-based access to remote indexes is discouraged.
@@ -270,28 +171,18 @@ namespace Lucene.Net.Search
 			}
 			return result;
 		}
-		
-		/* The following abstract methods were added as a workaround for GCJ bug #15411.
-		* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15411
-		*/
-		/// <deprecated> use <see cref="Search(Weight, Filter, Collector)" /> instead.
-		/// </deprecated>
-        [Obsolete("use Search(Weight, Filter, Collector) instead.")]
-		public virtual void  Search(Weight weight, Filter filter, HitCollector results)
-		{
-			Search(weight, filter, new HitCollectorWrapper(results));
-		}
-		abstract public void  Search(Weight weight, Filter filter, Collector results);
-		abstract public void  Close();
-        abstract public void Dispose();
-		abstract public int DocFreq(Term term);
-		abstract public int MaxDoc();
-		abstract public TopDocs Search(Weight weight, Filter filter, int n);
-		abstract public Document Doc(int i);
-		abstract public Query Rewrite(Query query);
-		abstract public Explanation Explain(Weight weight, int doc);
-		abstract public TopFieldDocs Search(Weight weight, Filter filter, int n, Sort sort);
+
+		public abstract void  Search(Weight weight, Filter filter, Collector results);
+		public abstract void  Close();
+        public abstract void Dispose();
+		public abstract int DocFreq(Term term);
+		public abstract int MaxDoc();
+		public abstract TopDocs Search(Weight weight, Filter filter, int n);
+		public abstract Document Doc(int i);
+	    public abstract Document Doc(int docid, FieldSelector fieldSelector);
+		public abstract Query Rewrite(Query query);
+		public abstract Explanation Explain(Weight weight, int doc);
+		public abstract TopFieldDocs Search(Weight weight, Filter filter, int n, Sort sort);
 		/* End patch for GCJ bug #15411. */
-		public abstract Lucene.Net.Documents.Document Doc(int param1, Lucene.Net.Documents.FieldSelector param2);
 	}
 }
\ No newline at end of file

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/SortField.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/SortField.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/SortField.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/SortField.cs Thu Nov 17 03:49:32 2011
@@ -42,7 +42,6 @@ namespace Lucene.Net.Search
 	[Serializable]
 	public class SortField
 	{
-		
 		/// <summary>Sort by document score (relevancy).  Sort values are Float and higher
 		/// values are at the front. 
 		/// </summary>
@@ -53,17 +52,7 @@ namespace Lucene.Net.Search
 		/// </summary>
 		public const int DOC = 1;
 		
-		/// <summary>Guess type of sort based on field contents.  A regular expression is used
-		/// to look at the first term indexed for the field and determine if it
-		/// represents an integer number, a floating point number, or just arbitrary
-		/// string characters.
-		/// </summary>
-		/// <deprecated> Please specify the exact type, instead.
-		/// Especially, guessing does <b>not</b> work with the new
-		/// <see cref="NumericField" /> type.
-		/// </deprecated>
-        [Obsolete("Please specify the exact type, instead. Especially, guessing does not work with the new NumericField type.")]
-		public const int AUTO = 2;
+		// reserved, in Lucene 2.9, there was a constant: AUTO = 2
 		
 		/// <summary>Sort using term values as Strings.  Sort values are String and lower
 		/// values are at the front. 
@@ -123,47 +112,14 @@ namespace Lucene.Net.Search
 		public static readonly SortField FIELD_DOC = new SortField(null, DOC);
 		
 		private System.String field;
-		private int type = AUTO; // defaults to determining type dynamically
+		private int type; // defaults to determining type dynamically
 		private System.Globalization.CultureInfo locale; // defaults to "natural order" (no Locale)
 		internal bool reverse = false; // defaults to natural order
-		private SortComparatorSource factory;
 		private Lucene.Net.Search.Parser parser;
 		
 		// Used for CUSTOM sort
 		private FieldComparatorSource comparatorSource;
 		
-		private bool useLegacy = false; // remove in Lucene 3.0
-		
-		/// <summary>Creates a sort by terms in the given field where the type of term value
-		/// is determined dynamically (<see cref="AUTO" />).
-		/// </summary>
-		/// <param name="field">Name of field to sort by, cannot be
-		/// <c>null</c>.
-		/// </param>
-		/// <deprecated> Please specify the exact type instead.
-		/// </deprecated>
-        [Obsolete("Please specify the exact type instead.")]
-		public SortField(System.String field)
-		{
-			InitFieldType(field, AUTO);
-		}
-		
-		/// <summary>Creates a sort, possibly in reverse, by terms in the given field where
-		/// the type of term value is determined dynamically (<see cref="AUTO" />).
-		/// </summary>
-		/// <param name="field">Name of field to sort by, cannot be <c>null</c>.
-		/// </param>
-		/// <param name="reverse">True if natural order should be reversed.
-		/// </param>
-		/// <deprecated> Please specify the exact type instead.
-		/// </deprecated>
-        [Obsolete("Please specify the exact type instead.")]
-		public SortField(System.String field, bool reverse)
-		{
-			InitFieldType(field, AUTO);
-			this.reverse = reverse;
-		}
-		
 		/// <summary>Creates a sort by terms in the given field with the type of term
 		/// values explicitly given.
 		/// </summary>
@@ -280,21 +236,6 @@ namespace Lucene.Net.Search
 		/// </param>
 		/// <param name="comparator">Returns a comparator for sorting hits.
 		/// </param>
-		/// <deprecated> use SortField (String field, FieldComparatorSource comparator)
-		/// </deprecated>
-        [Obsolete("use SortField (String field, FieldComparatorSource comparator)")]
-		public SortField(System.String field, SortComparatorSource comparator)
-		{
-			InitFieldType(field, CUSTOM);
-			SetUseLegacySearch(true);
-			this.factory = comparator;
-		}
-		
-		/// <summary>Creates a sort with a custom comparison function.</summary>
-		/// <param name="field">Name of field to sort by; cannot be <c>null</c>.
-		/// </param>
-		/// <param name="comparator">Returns a comparator for sorting hits.
-		/// </param>
 		public SortField(System.String field, FieldComparatorSource comparator)
 		{
 			InitFieldType(field, CUSTOM);
@@ -308,24 +249,6 @@ namespace Lucene.Net.Search
 		/// </param>
 		/// <param name="reverse">True if natural order should be reversed.
 		/// </param>
-		/// <deprecated> use SortField (String field, FieldComparatorSource comparator, boolean reverse)
-		/// </deprecated>
-        [Obsolete("use SortField(String field, FieldComparatorSource comparator, boolean reverse)")]
-		public SortField(System.String field, SortComparatorSource comparator, bool reverse)
-		{
-			InitFieldType(field, CUSTOM);
-			SetUseLegacySearch(true);
-			this.reverse = reverse;
-			this.factory = comparator;
-		}
-		
-		/// <summary>Creates a sort, possibly in reverse, with a custom comparison function.</summary>
-		/// <param name="field">Name of field to sort by; cannot be <c>null</c>.
-		/// </param>
-		/// <param name="comparator">Returns a comparator for sorting hits.
-		/// </param>
-		/// <param name="reverse">True if natural order should be reversed.
-		/// </param>
 		public SortField(System.String field, FieldComparatorSource comparator, bool reverse)
 		{
 			InitFieldType(field, CUSTOM);
@@ -360,7 +283,7 @@ namespace Lucene.Net.Search
 		}
 		
 		/// <summary>Returns the type of contents in the field.</summary>
-		/// <returns> One of the constants SCORE, DOC, AUTO, STRING, INT or FLOAT.
+		/// <returns> One of the constants SCORE, DOC, STRING, INT or FLOAT.
 		/// </returns>
 		public new virtual int GetType()
 		{
@@ -395,44 +318,15 @@ namespace Lucene.Net.Search
 			return reverse;
 		}
 		
-		/// <deprecated> use <see cref="GetComparatorSource()" />
-		/// </deprecated>
-        [Obsolete("use GetComparatorSource()")]
-		public virtual SortComparatorSource GetFactory()
-		{
-			return factory;
-		}
-		
+		/// <summary>
+		/// Returns the <see cref="FieldComparatorSource"/> used for
+		/// custom sorting
+		/// </summary>
 		public virtual FieldComparatorSource GetComparatorSource()
 		{
 			return comparatorSource;
 		}
 		
-		/// <summary> Use legacy IndexSearch implementation: search with a DirectoryReader rather
-		/// than passing a single hit collector to multiple SegmentReaders.
-		/// 
-		/// </summary>
-		/// <param name="legacy">true for legacy behavior
-		/// </param>
-		/// <deprecated> will be removed in Lucene 3.0.
-		/// </deprecated>
-        [Obsolete("will be removed in Lucene 3.0.")]
-		public virtual void  SetUseLegacySearch(bool legacy)
-		{
-			this.useLegacy = legacy;
-		}
-		
-		/// <returns> if true, IndexSearch will use legacy sorting search implementation.
-		/// eg. multiple Priority Queues.
-		/// </returns>
-		/// <deprecated> will be removed in Lucene 3.0.
-		/// </deprecated>
-        [Obsolete("will be removed in Lucene 3.0.")]
-		public virtual bool GetUseLegacySearch()
-		{
-			return this.useLegacy;
-		}
-		
 		public override System.String ToString()
 		{
 			System.Text.StringBuilder buffer = new System.Text.StringBuilder();
@@ -443,62 +337,46 @@ namespace Lucene.Net.Search
 					buffer.Append("<score>");
 					break;
 				
-				
 				case DOC: 
 					buffer.Append("<doc>");
 					break;
 				
-				
-				case AUTO: 
-					buffer.Append("<auto: \"").Append(field).Append("\">");
-					break;
-				
-				
 				case STRING: 
 					buffer.Append("<string: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case STRING_VAL: 
 					buffer.Append("<string_val: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case BYTE: 
 					buffer.Append("<byte: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case SHORT: 
 					buffer.Append("<short: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case INT: 
 					buffer.Append("<int: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case LONG: 
 					buffer.Append("<long: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case FLOAT: 
 					buffer.Append("<float: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case DOUBLE: 
 					buffer.Append("<double: \"").Append(field).Append("\">");
 					break;
 				
-				
 				case CUSTOM: 
-					buffer.Append("<custom:\"").Append(field).Append("\": ").Append(factory).Append('>');
+					buffer.Append("<custom:\"").Append(field).Append("\": ").Append(comparatorSource).Append('>');
 					break;
 				
-				
 				default: 
 					buffer.Append("<???: \"").Append(field).Append("\">");
 					break;
@@ -516,7 +394,7 @@ namespace Lucene.Net.Search
 		}
 		
 		/// <summary>Returns true if <c>o</c> is equal to this.  If a
-		/// <see cref="SortComparatorSource" /> (deprecated) or <see cref="Parser" />
+		/// <see cref="FieldComparatorSource" />  or <see cref="Parser" />
 		/// was provided, it must properly
 		/// implement equals (unless a singleton is always used). 
 		/// </summary>
@@ -527,11 +405,17 @@ namespace Lucene.Net.Search
 			if (!(o is SortField))
 				return false;
 			SortField other = (SortField) o;
-			return ((System.Object) other.field == (System.Object) this.field && other.type == this.type && other.reverse == this.reverse && (other.locale == null?this.locale == null:other.locale.Equals(this.locale)) && (other.factory == null?this.factory == null:other.factory.Equals(this.factory)) && (other.comparatorSource == null?this.comparatorSource == null:other.comparatorSource.Equals(this.comparatorSource)) && (other.parser == null?this.parser == null:other.parser.Equals(this.parser)));
+		    return ((System.Object) other.field == (System.Object) this.field && other.type == this.type &&
+		            other.reverse == this.reverse &&
+		            (other.locale == null ? this.locale == null : other.locale.Equals(this.locale)) &&
+		            (other.comparatorSource == null
+		                 ? this.comparatorSource == null
+		                 : other.comparatorSource.Equals(this.comparatorSource)) &&
+		            (other.parser == null ? this.parser == null : other.parser.Equals(this.parser)));
 		}
 		
 		/// <summary>Returns true if <c>o</c> is equal to this.  If a
-		/// <see cref="SortComparatorSource" /> (deprecated) or <see cref="Parser" />
+		/// <see cref="FieldComparatorSource" /> (deprecated) or <see cref="Parser" />
 		/// was provided, it must properly
 		/// implement hashCode (unless a singleton is always
 		/// used). 
@@ -545,8 +429,6 @@ namespace Lucene.Net.Search
 			{
 				hash += (locale.GetHashCode() ^ 0x08150815);
 			}
-			if (factory != null)
-				hash += (factory.GetHashCode() ^ 0x34987555);
 			if (comparatorSource != null)
 				hash += comparatorSource.GetHashCode();
 			if (parser != null)
@@ -597,94 +479,44 @@ namespace Lucene.Net.Search
 			
 			switch (type)
 			{
-				
 				case SortField.SCORE: 
 					return new FieldComparator.RelevanceComparator(numHits);
 				
-				
 				case SortField.DOC: 
 					return new FieldComparator.DocComparator(numHits);
 				
-				
 				case SortField.INT: 
 					return new FieldComparator.IntComparator(numHits, field, parser);
 				
-				
 				case SortField.FLOAT: 
 					return new FieldComparator.FloatComparator(numHits, field, parser);
 				
-				
 				case SortField.LONG: 
 					return new FieldComparator.LongComparator(numHits, field, parser);
 				
-				
 				case SortField.DOUBLE: 
 					return new FieldComparator.DoubleComparator(numHits, field, parser);
 				
-				
 				case SortField.BYTE: 
 					return new FieldComparator.ByteComparator(numHits, field, parser);
 				
-				
 				case SortField.SHORT: 
 					return new FieldComparator.ShortComparator(numHits, field, parser);
 				
-				
 				case SortField.CUSTOM: 
-					System.Diagnostics.Debug.Assert(factory == null && comparatorSource != null);
+					System.Diagnostics.Debug.Assert(comparatorSource != null);
 					return comparatorSource.NewComparator(field, numHits, sortPos, reverse);
 				
-				
 				case SortField.STRING: 
 					return new FieldComparator.StringOrdValComparator(numHits, field, sortPos, reverse);
 				
-				
 				case SortField.STRING_VAL: 
 					return new FieldComparator.StringValComparator(numHits, field);
 				
-				
 				default: 
 					throw new System.SystemException("Illegal sort type: " + type);
 				
 			}
 		}
-		
-		/// <summary> Attempts to detect the given field type for an IndexReader.</summary>
-		/// <deprecated>
-		/// </deprecated>
-        [Obsolete]
-		internal static int DetectFieldType(IndexReader reader, System.String fieldKey)
-		{
-			System.String field = StringHelper.Intern(fieldKey);
-			TermEnum enumerator = reader.Terms(new Term(field));
-			try
-			{
-				Term term = enumerator.Term();
-				if (term == null)
-				{
-					throw new System.SystemException("no terms in field " + field + " - cannot determine sort type");
-				}
-				int ret = 0;
-				if ((System.Object) term.Field() == (System.Object) field)
-				{
-					System.String termtext = term.Text().Trim();
-                    
-                    int tmpI32; long tmpI64; float tmpF;
-                    if      (System.Int32.TryParse(termtext, out tmpI32))       ret = SortField.INT;
-                    else if (System.Int64.TryParse(termtext, out tmpI64))       ret = SortField.LONG;
-                    else if (Single.TryParse(termtext, out tmpF))  ret = SortField.FLOAT;
-                    else ret = SortField.STRING;
-				}
-				else
-				{
-					throw new System.SystemException("field \"" + field + "\" does not appear to be indexed");
-				}
-				return ret;
-			}
-			finally
-			{
-				enumerator.Close();
-			}
-		}
 	}
 }
\ No newline at end of file

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/IndexInput.cs Thu Nov 17 03:49:32 2011
@@ -16,6 +16,7 @@
  */
 
 using System;
+using Lucene.Net.Support;
 
 namespace Lucene.Net.Store
 {
@@ -262,7 +263,7 @@ namespace Lucene.Net.Store
 		// returns Map<String, String>
 		public virtual System.Collections.Generic.IDictionary<string,string> ReadStringStringMap()
 		{
-            System.Collections.Generic.Dictionary<string, string> map = new System.Collections.Generic.Dictionary<string, string>();
+            var map = new HashMap<string, string>();
 			int count = ReadInt();
 			for (int i = 0; i < count; i++)
 			{

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/SimpleFSLockFactory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/SimpleFSLockFactory.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/SimpleFSLockFactory.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Store/SimpleFSLockFactory.cs Thu Nov 17 03:49:32 2011
@@ -75,9 +75,8 @@ namespace Lucene.Net.Store
 		/// <param name="lockDirName">where lock files should be created.
 		/// </param>
 		public SimpleFSLockFactory(System.String lockDirName)
+            : this(new System.IO.DirectoryInfo(lockDirName))
 		{
-			lockDir = new System.IO.DirectoryInfo(lockDirName);
-			SetLockDir(lockDir);
 		}
 		
 		public override Lock MakeLock(System.String lockName)

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Support/FileSupport.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Support/FileSupport.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Support/FileSupport.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Support/FileSupport.cs Thu Nov 17 03:49:32 2011
@@ -26,10 +26,12 @@ namespace Lucene.Net.Support
             else
                 return null;
         }
-
+        
+        // TODO: This filesupport thing is silly.  Same goes with _TestUtil's RMDir.
+        //       If we're removing a directory
         public static System.IO.FileInfo[] GetFiles(System.IO.DirectoryInfo path)
         {
-            return path.GetFiles();
+            return GetFiles(new FileInfo(path.FullName));
         }
 
         /// <summary>

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Util/CloseableThreadLocal.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Util/CloseableThreadLocal.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Util/CloseableThreadLocal.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Util/CloseableThreadLocal.cs Thu Nov 17 03:49:32 2011
@@ -17,6 +17,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading;
 using Lucene.Net.Support;
 
@@ -96,14 +97,14 @@ namespace Lucene.Net.Util
             {
                 //hardRefs[Thread.CurrentThread] = @object;
                 hardRefs.Add(Thread.CurrentThread, @object);
-
+                
+                // Java's iterator can remove, .NET's cannot
+                var threadsToRemove = hardRefs.Keys.Where(thread => !thread.IsAlive).ToList();
                 // Purge dead threads
-                foreach (var thread in hardRefs.Keys)
+                foreach (var thread in threadsToRemove)
                 {
-                    if (!thread.IsAlive)
-                        hardRefs.Remove(thread);
+                    hardRefs.Remove(thread);
                 }
-
             }
         }
 

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexWriter.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexWriter.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexWriter.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexWriter.cs Thu Nov 17 03:49:32 2011
@@ -2812,14 +2812,14 @@ namespace Lucene.Net.Index
                         if (ioe.Message.StartsWith("fake disk full at") || ioe.Message.Equals("now failing on purpose"))
                         {
                             diskFull = true;
-                            try
-                            {
+                            //try
+                            //{
                                 System.Threading.Thread.Sleep(new System.TimeSpan((System.Int64)10000 * 1));
-                            }
-                            catch (System.Threading.ThreadInterruptedException ie)
-                            {
-                                throw;
-                            }
+                            //}
+                            //catch (System.Threading.ThreadInterruptedException ie)
+                            //{
+                            //    throw;
+                            //}
                             if (fullCount++ >= 5)
                                 break;
                         }
@@ -3627,7 +3627,7 @@ namespace Lucene.Net.Index
                 writer.AddDocument(document);
             writer.Close();
 
-            IndexReader ir = IndexReader.Open(dir, true);
+            IndexReader ir = IndexReader.Open(dir, false);
             Assert.AreEqual(10, ir.MaxDoc());
             Assert.AreEqual(10, ir.NumDocs());
             ir.DeleteDocument(0);
@@ -3641,7 +3641,7 @@ namespace Lucene.Net.Index
             writer.ExpungeDeletes();
             Assert.AreEqual(8, writer.NumDocs());
             writer.Close();
-            ir = IndexReader.Open(dir);
+            ir = IndexReader.Open(dir, true);
             Assert.AreEqual(8, ir.MaxDoc());
             Assert.AreEqual(8, ir.NumDocs());
             ir.Close();
@@ -3669,7 +3669,7 @@ namespace Lucene.Net.Index
                 writer.AddDocument(document);
             writer.Close();
 
-            IndexReader ir = IndexReader.Open(dir, true);
+            IndexReader ir = IndexReader.Open(dir, false);
             Assert.AreEqual(98, ir.MaxDoc());
             Assert.AreEqual(98, ir.NumDocs());
             for (int i = 0; i < 98; i += 2)
@@ -5782,7 +5782,7 @@ namespace Lucene.Net.Index
             w.AddDocument(doc);
 
             // commit to "first"
-            Dictionary<string, string> commitData = new Dictionary<string, string>();
+            IDictionary<string, string> commitData = new HashMap<string, string>();
             commitData["tag"]="first";
             w.Commit(commitData);
 
@@ -5796,7 +5796,9 @@ namespace Lucene.Net.Index
             IndexCommit commit = null;
             foreach(var c in IndexReader.ListCommits(dir))
             {
-                string tag = c.GetUserData()["tag"];
+                //string tag = c.GetUserData()["tag"];
+                var thing = c.GetUserData();
+                string tag = thing["tag"];
                 if ("first".Equals(tag))
                 {
                     commit = c;

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestParallelReader.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestParallelReader.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestParallelReader.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestParallelReader.cs Thu Nov 17 03:49:32 2011
@@ -77,8 +77,8 @@ namespace Lucene.Net.Index
 			Directory dir1 = GetDir1();
 			Directory dir2 = GetDir2();
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
             System.Collections.Generic.ICollection<string> fieldNames = pr.GetFieldNames(IndexReader.FieldOption.ALL);
 			Assert.AreEqual(4, fieldNames.Count);
 			Assert.IsTrue(CollectionsHelper.Contains(fieldNames, "f1"));
@@ -93,8 +93,8 @@ namespace Lucene.Net.Index
 			Directory dir1 = GetDir1();
 			Directory dir2 = GetDir2();
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			
 			Document doc11 = pr.Document(0, new MapFieldSelector(new System.String[]{"f1"}));
 			Document doc24 = pr.Document(1, new MapFieldSelector(new System.Collections.ArrayList(new System.String[]{"f4"})));
@@ -125,10 +125,10 @@ namespace Lucene.Net.Index
 			w2.Close();
 			
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
+            pr.Add(IndexReader.Open(dir1, false));
 			try
 			{
-				pr.Add(IndexReader.Open(dir2));
+                pr.Add(IndexReader.Open(dir2, false));
 				Assert.Fail("didn't get exptected exception: indexes don't have same number of documents");
 			}
 			catch (System.ArgumentException e)
@@ -143,19 +143,19 @@ namespace Lucene.Net.Index
 			Directory dir1 = GetDir1();
 			Directory dir2 = GetDir2();
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+			pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			
 			Assert.IsTrue(pr.IsCurrent());
-			IndexReader modifier = IndexReader.Open(dir1);
+            IndexReader modifier = IndexReader.Open(dir1, false);
 			modifier.SetNorm(0, "f1", 100);
 			modifier.Close();
 			
 			// one of the two IndexReaders which ParallelReader is using
 			// is not current anymore
 			Assert.IsFalse(pr.IsCurrent());
-			
-			modifier = IndexReader.Open(dir2);
+
+            modifier = IndexReader.Open(dir2, false);
 			modifier.SetNorm(0, "f3", 100);
 			modifier.Close();
 			
@@ -184,8 +184,8 @@ namespace Lucene.Net.Index
 			
 			
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			Assert.IsFalse(pr.IsOptimized());
 			pr.Close();
 			
@@ -194,8 +194,8 @@ namespace Lucene.Net.Index
 			modifier.Close();
 			
 			pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			// just one of the two indexes are optimized
 			Assert.IsFalse(pr.IsOptimized());
 			pr.Close();
@@ -206,8 +206,8 @@ namespace Lucene.Net.Index
 			modifier.Close();
 			
 			pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			// now both indexes are optimized
 			Assert.IsTrue(pr.IsOptimized());
 			pr.Close();
@@ -219,8 +219,8 @@ namespace Lucene.Net.Index
 			Directory dir1 = GetDir1();
 			Directory dir2 = GetDir2();
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			int NUM_DOCS = 2;
 			TermDocs td = pr.TermDocs(null);
 			for (int i = 0; i < NUM_DOCS; i++)
@@ -271,8 +271,8 @@ namespace Lucene.Net.Index
 			d2.Add(new Field("f4", "v2", Field.Store.YES, Field.Index.ANALYZED));
 			w.AddDocument(d2);
 			w.Close();
-			
-			return new IndexSearcher(dir);
+
+            return new IndexSearcher(dir, false);
 		}
 		
 		// Fields 1 & 2 in one index, 3 & 4 in other, with ParallelReader:
@@ -281,8 +281,8 @@ namespace Lucene.Net.Index
 			Directory dir1 = GetDir1();
 			Directory dir2 = GetDir2();
 			ParallelReader pr = new ParallelReader();
-			pr.Add(IndexReader.Open(dir1));
-			pr.Add(IndexReader.Open(dir2));
+            pr.Add(IndexReader.Open(dir1, false));
+            pr.Add(IndexReader.Open(dir2, false));
 			return new IndexSearcher(pr);
 		}
 		

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestCustomSearcherSort.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestCustomSearcherSort.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestCustomSearcherSort.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestCustomSearcherSort.cs Thu Nov 17 03:49:32 2011
@@ -118,7 +118,7 @@ namespace Lucene.Net.Search
 		{
 			// log("Run testFieldSortSingleSearcher");
 			// define the sort criteria
-			Sort custSort = new Sort(new SortField("publicationDate_"), SortField.FIELD_SCORE);
+			Sort custSort = new Sort(new SortField("publicationDate_", SortField.STRING), SortField.FIELD_SCORE);
 			Searcher searcher = new MultiSearcher(new Searcher[]{new CustomSearcher(this, index, 2)});
 			// search and check hits
 			MatchHits(searcher, custSort);
@@ -129,7 +129,7 @@ namespace Lucene.Net.Search
 		{
 			// log("Run testFieldSortMultiCustomSearcher");
 			// define the sort criteria
-			Sort custSort = new Sort(new SortField("publicationDate_"), SortField.FIELD_SCORE);
+            Sort custSort = new Sort(new SortField("publicationDate_", SortField.STRING), SortField.FIELD_SCORE);
 			Searcher searcher = new MultiSearcher(new Searchable[]{new CustomSearcher(this, index, 0), new CustomSearcher(this, index, 2)});
 			// search and check hits
 			MatchHits(searcher, custSort);
@@ -231,10 +231,12 @@ namespace Lucene.Net.Search
 				
 			}
 			private int switcher;
-			/// <param name="directory">
-			/// </param>
-			/// <throws>  IOException </throws>
-			public CustomSearcher(TestCustomSearcherSort enclosingInstance, Directory directory, int switcher):base(directory)
+
+		    /// <param name="directory">
+		    /// </param>
+		    /// <throws>  IOException </throws>
+		    public CustomSearcher(TestCustomSearcherSort enclosingInstance, Directory directory, int switcher)
+		        : base(directory, true)
 			{
 				InitBlock(enclosingInstance);
 				this.switcher = switcher;

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestSetNorm.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestSetNorm.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestSetNorm.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestSetNorm.cs Thu Nov 17 03:49:32 2011
@@ -97,7 +97,7 @@ namespace Lucene.Net.Search
 			writer.Close();
 			
 			// reset the boost of each instance of this document
-			IndexReader reader = IndexReader.Open(store);
+			IndexReader reader = IndexReader.Open(store, false);
 			reader.SetNorm(0, "field", 1.0f);
 			reader.SetNorm(1, "field", 2.0f);
 			reader.SetNorm(2, "field", 4.0f);
@@ -107,7 +107,7 @@ namespace Lucene.Net.Search
 			// check that searches are ordered by this boost
 			float[] scores = new float[4];
 			
-			new IndexSearcher(store).Search(new TermQuery(new Term("field", "word")), new AnonymousClassCollector(scores, this));
+			new IndexSearcher(store, true).Search(new TermQuery(new Term("field", "word")), new AnonymousClassCollector(scores, this));
 			
 			float lastScore = 0.0f;
 			

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermRangeQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermRangeQuery.cs?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermRangeQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermRangeQuery.cs Thu Nov 17 03:49:32 2011
@@ -33,12 +33,9 @@ using LuceneTestCase = Lucene.Net.Util.L
 
 namespace Lucene.Net.Search
 {
-	
-	
     [TestFixture]
 	public class TestTermRangeQuery:LuceneTestCase
 	{
-		
 		private int docCount = 0;
 		private RAMDirectory dir;
 		
@@ -54,62 +51,43 @@ namespace Lucene.Net.Search
 		{
 			Query query = new TermRangeQuery("content", "A", "C", false, false);
 			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			IndexSearcher searcher = new IndexSearcher(dir);
+			IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "A,B,C,D, only B in range");
 			searcher.Close();
 			
 			InitializeIndex(new System.String[]{"A", "B", "D"});
-			searcher = new IndexSearcher(dir);
+			searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "A,B,D, only B in range");
 			searcher.Close();
 			
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
+			searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "C added, still only B in range");
 			searcher.Close();
 		}
 		
-		//TODO: remove in Lucene 3.0
-        [Test]
-		public virtual void  TestDeprecatedCstrctors()
-		{
-			Query query = new RangeQuery(null, new Term("content", "C"), false);
-			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			IndexSearcher searcher = new IndexSearcher(dir);
-			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
-			Assert.AreEqual(2, hits.Length, "A,B,C,D, only B in range");
-			searcher.Close();
-			
-			query = new RangeQuery(new Term("content", "C"), null, false);
-			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			searcher = new IndexSearcher(dir);
-			hits = searcher.Search(query, null, 1000).ScoreDocs;
-			Assert.AreEqual(1, hits.Length, "A,B,C,D, only B in range");
-			searcher.Close();
-		}
-		
         [Test]
 		public virtual void  TestInclusive()
 		{
 			Query query = new TermRangeQuery("content", "A", "C", true, true);
 			
 			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			IndexSearcher searcher = new IndexSearcher(dir);
+			IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(3, hits.Length, "A,B,C,D - A,B,C in range");
 			searcher.Close();
 			
 			InitializeIndex(new System.String[]{"A", "B", "D"});
-			searcher = new IndexSearcher(dir);
+			searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(2, hits.Length, "A,B,D - A and B in range");
 			searcher.Close();
 			
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
+			searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(3, hits.Length, "C added - A, B, C in range");
 			searcher.Close();
@@ -168,19 +146,19 @@ namespace Lucene.Net.Search
 		{
 			Query query = new TermRangeQuery("content", "A", "C", false, false, new System.Globalization.CultureInfo("en").CompareInfo);
 			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			IndexSearcher searcher = new IndexSearcher(dir);
+			IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "A,B,C,D, only B in range");
 			searcher.Close();
 			
 			InitializeIndex(new System.String[]{"A", "B", "D"});
-			searcher = new IndexSearcher(dir);
+            searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "A,B,D, only B in range");
 			searcher.Close();
 			
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
+            searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "C added, still only B in range");
 			searcher.Close();
@@ -192,19 +170,19 @@ namespace Lucene.Net.Search
 			Query query = new TermRangeQuery("content", "A", "C", true, true, new System.Globalization.CultureInfo("en").CompareInfo);
 			
 			InitializeIndex(new System.String[]{"A", "B", "C", "D"});
-			IndexSearcher searcher = new IndexSearcher(dir);
+            IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(3, hits.Length, "A,B,C,D - A,B,C in range");
 			searcher.Close();
 			
 			InitializeIndex(new System.String[]{"A", "B", "D"});
-			searcher = new IndexSearcher(dir);
+            searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(2, hits.Length, "A,B,D - A and B in range");
 			searcher.Close();
 			
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
+            searcher = new IndexSearcher(dir, true);
 			hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(3, hits.Length, "C added - A, B, C in range");
 			searcher.Close();
@@ -223,7 +201,7 @@ namespace Lucene.Net.Search
 			// index Term below should NOT be returned by a TermRangeQuery with a Farsi
 			// Collator (or an Arabic one for the case when Farsi is not supported).
 			InitializeIndex(new System.String[]{"\u0633\u0627\u0628"});
-			IndexSearcher searcher = new IndexSearcher(dir);
+            IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(0, hits.Length, "The index Term should not be included.");
 			
@@ -245,7 +223,7 @@ namespace Lucene.Net.Search
 			// Unicode order would not include "H\u00C5T" in [ "H\u00D8T", "MAND" ],
 			// but Danish collation does.
 			InitializeIndex(words);
-			IndexSearcher searcher = new IndexSearcher(dir);
+            IndexSearcher searcher = new IndexSearcher(dir, true);
 			ScoreDoc[] hits = searcher.Search(query, null, 1000).ScoreDocs;
 			Assert.AreEqual(1, hits.Length, "The index Term should be included.");
 			
@@ -271,7 +249,7 @@ namespace Lucene.Net.Search
 				
 				public override bool IncrementToken()
 				{
-					int count = input.Read((System.Char[]) buffer, 0, buffer.Length);
+					int count = input.Read(buffer, 0, buffer.Length);
 					if (done)
 						return false;
 					else
@@ -356,27 +334,27 @@ namespace Lucene.Net.Search
 			//http://issues.apache.org/jira/browse/LUCENE-38
 			Query query = new TermRangeQuery("content", null, "C", false, false);
 			InitializeIndex(new System.String[]{"A", "B", "", "C", "D"}, analyzer);
-			IndexSearcher searcher = new IndexSearcher(dir);
-			Hits hits = searcher.Search(query);
+            IndexSearcher searcher = new IndexSearcher(dir, true);
+			int numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(3, hits.Length(), "A,B,<empty string>,C,D => A, B & <empty string> are in range");
+            Assert.AreEqual(3, numHits, "A,B,<empty string>,C,D => A, B & <empty string> are in range");
 			// until Lucene-38 is fixed, use this assert:
             //Assert.AreEqual(2, hits.length(),"A,B,<empty string>,C,D => A, B & <empty string> are in range");
 			
 			searcher.Close();
 			InitializeIndex(new System.String[]{"A", "B", "", "D"}, analyzer);
-			searcher = new IndexSearcher(dir);
-			hits = searcher.Search(query);
+            searcher = new IndexSearcher(dir, true);
+            numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(3, hits.Length(), "A,B,<empty string>,D => A, B & <empty string> are in range");
+            Assert.AreEqual(3, numHits, "A,B,<empty string>,D => A, B & <empty string> are in range");
 			// until Lucene-38 is fixed, use this assert:
             //Assert.AreEqual(2, hits.length(), "A,B,<empty string>,D => A, B & <empty string> are in range");
 			searcher.Close();
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
-			hits = searcher.Search(query);
+            searcher = new IndexSearcher(dir, true);
+            numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(3, hits.Length(), "C added, still A, B & <empty string> are in range");
+            Assert.AreEqual(3, numHits, "C added, still A, B & <empty string> are in range");
 			// until Lucene-38 is fixed, use this assert
             //Assert.AreEqual(2, hits.length(), "C added, still A, B & <empty string> are in range");
 			searcher.Close();
@@ -390,26 +368,26 @@ namespace Lucene.Net.Search
 			Analyzer analyzer = new SingleCharAnalyzer();
 			Query query = new TermRangeQuery("content", null, "C", true, true);
 			InitializeIndex(new System.String[]{"A", "B", "", "C", "D"}, analyzer);
-			IndexSearcher searcher = new IndexSearcher(dir);
-			Hits hits = searcher.Search(query);
+            IndexSearcher searcher = new IndexSearcher(dir, true);
+            int numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(4, hits.Length(), "A,B,<empty string>,C,D => A,B,<empty string>,C in range");
+            Assert.AreEqual(4, numHits, "A,B,<empty string>,C,D => A,B,<empty string>,C in range");
 			// until Lucene-38 is fixed, use this assert
             //Assert.AreEqual(3, hits.length(), "A,B,<empty string>,C,D => A,B,<empty string>,C in range");
 			searcher.Close();
 			InitializeIndex(new System.String[]{"A", "B", "", "D"}, analyzer);
-			searcher = new IndexSearcher(dir);
-			hits = searcher.Search(query);
+            searcher = new IndexSearcher(dir, true);
+            numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(3, hits.Length(), "A,B,<empty string>,D - A, B and <empty string> in range");
+            Assert.AreEqual(3, numHits, "A,B,<empty string>,D - A, B and <empty string> in range");
 			// until Lucene-38 is fixed, use this assert
             //Assert.AreEqual(2, hits.length(), "A,B,<empty string>,D => A, B and <empty string> in range");
 			searcher.Close();
 			AddDoc("C");
-			searcher = new IndexSearcher(dir);
-			hits = searcher.Search(query);
+            searcher = new IndexSearcher(dir, true);
+            numHits = searcher.Search(query, null, 1000).TotalHits;
 			// When Lucene-38 is fixed, use the assert on the next line:
-			Assert.AreEqual(4, hits.Length(), "C added => A,B,<empty string>,C in range");
+            Assert.AreEqual(4, numHits, "C added => A,B,<empty string>,C in range");
 			// until Lucene-38 is fixed, use this assert
             //Assert.AreEqual(3, hits.length(), "C added => A,B,<empty string>,C in range");
 			searcher.Close();

Modified: incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt?rev=1203041&r1=1203040&r2=1203041&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt (original)
+++ incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt Thu Nov 17 03:49:32 2011
@@ -83,7 +83,7 @@ index\TestNewestSegment.java - IDENTICAL
 index\TestNorms.java - DONE
 index\TestNRTReaderWithThreads.java - Text files are different
 index\TestOmitTf.java - DONE
-index\TestParallelReader.java - Text files are different
+index\TestParallelReader.java - DONE
 index\TestParallelReaderEmptyIndex.java - IDENTICAL
 index\TestParallelTermEnum.java - Text files are different
 index\TestPayloads.java - DONE
@@ -204,7 +204,7 @@ search\TestSort.java - DONE
 search\TestSpanQueryFilter.java - Text files are different
 search\TestStressSort.java - REMOVED
 search\TestTermRangeFilter.java - DONE
-search\TestTermRangeQuery.java - Text files are different
+search\TestTermRangeQuery.java - DONE
 search\TestTermScorer.java - Text files are different
 search\TestTermVectors.java - DONE
 search\TestThreadSafe.java - DONE