You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by di...@apache.org on 2011/04/28 22:19:20 UTC

[Lucene.Net] svn commit: r1097596 - in /incubator/lucene.net/branches/Lucene.Net_2_9_4g: src/core/Index/ src/core/Search/ src/core/Search/Spans/ src/core/Util/ test/core/Search/ test/core/Util/

Author: digy
Date: Thu Apr 28 20:19:19 2011
New Revision: 1097596

URL: http://svn.apache.org/viewvc?rev=1097596&view=rev
Log:
[LUCENENET-412] PriorityQueue

Modified:
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/MultipleTermPositions.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/SegmentMergeQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldDocSortedHitQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldSortedHitQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldValueHitQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FuzzyQuery.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/HitQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/IndexSearcher.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/MultiSearcher.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/ParallelMultiSearcher.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/PhraseQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/NearSpansUnordered.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/SpanOrQuery.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocsCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopFieldCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopScoreDocCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Util/PriorityQueue.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/JustCompileSearch.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestElevationComparator.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestPositiveScoresOnlyCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestSort.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopDocsCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopScoreDocCollector.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestOpenBitSet.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestPriorityQueue.cs

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/MultipleTermPositions.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/MultipleTermPositions.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/MultipleTermPositions.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/MultipleTermPositions.cs Thu Apr 28 20:19:19 2011
@@ -16,8 +16,9 @@
  */
 
 using System;
+using System.Collections.Generic;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Index
 {
@@ -29,29 +30,27 @@ namespace Lucene.Net.Index
 	public class MultipleTermPositions : TermPositions
 	{
 		
-		private sealed class TermPositionsQueue:PriorityQueue
+		private sealed class TermPositionsQueue:PriorityQueue<TermPositions>
 		{
-			internal TermPositionsQueue(System.Collections.IList termPositions)
+			internal TermPositionsQueue(IList<TermPositions> termPositions)
 			{
 				Initialize(termPositions.Count);
-				
-				System.Collections.IEnumerator i = termPositions.GetEnumerator();
-				while (i.MoveNext())
-				{
-					TermPositions tp = (TermPositions) i.Current;
-					if (tp.Next())
-						Put(tp);
-				}
+
+                foreach (TermPositions tp in termPositions)
+                {
+                    if (tp.Next())
+                        Put(tp);
+                }
 			}
 			
 			internal TermPositions Peek()
 			{
 				return (TermPositions) Top();
 			}
-			
-			public override bool LessThan(System.Object a, System.Object b)
+
+            public override bool LessThan(TermPositions a, TermPositions b)
 			{
-				return ((TermPositions) a).Doc() < ((TermPositions) b).Doc();
+				return a.Doc() < b.Doc();
 			}
 		}
 		
@@ -120,7 +119,7 @@ namespace Lucene.Net.Index
 		/// </exception>
 		public MultipleTermPositions(IndexReader indexReader, Term[] terms)
 		{
-			System.Collections.IList termPositions = new System.Collections.ArrayList();
+            IList<TermPositions> termPositions = new List<TermPositions>();
 			
 			for (int i = 0; i < terms.Length; i++)
 				termPositions.Add(indexReader.TermPositions(terms[i]));

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/SegmentMergeQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/SegmentMergeQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/SegmentMergeQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Index/SegmentMergeQueue.cs Thu Apr 28 20:19:19 2011
@@ -17,22 +17,20 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Index
 {
 	
-	sealed class SegmentMergeQueue:PriorityQueue
+	sealed class SegmentMergeQueue:PriorityQueue<SegmentMergeInfo>
 	{
 		internal SegmentMergeQueue(int size)
 		{
 			Initialize(size);
 		}
-		
-		public override bool LessThan(System.Object a, System.Object b)
+
+        public override bool LessThan(SegmentMergeInfo stiA, SegmentMergeInfo stiB)
 		{
-			SegmentMergeInfo stiA = (SegmentMergeInfo) a;
-			SegmentMergeInfo stiB = (SegmentMergeInfo) b;
 			int comparison = stiA.term.CompareTo(stiB.term);
 			if (comparison == 0)
 				return stiA.base_Renamed < stiB.base_Renamed;

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldDocSortedHitQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldDocSortedHitQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldDocSortedHitQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldDocSortedHitQueue.cs Thu Apr 28 20:19:19 2011
@@ -17,7 +17,7 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -32,7 +32,7 @@ namespace Lucene.Net.Search
 	/// </since>
 	/// <version>  $Id: FieldDocSortedHitQueue.java 695514 2008-09-15 15:42:11Z otis $
 	/// </version>
-	class FieldDocSortedHitQueue:PriorityQueue
+	class FieldDocSortedHitQueue:PriorityQueue<ScoreDoc>
 	{
 		
 		// this cannot contain AUTO fields - any AUTO fields should
@@ -114,10 +114,11 @@ namespace Lucene.Net.Search
 		/// </param>
 		/// <returns> <code>true</code> if document <code>a</code> should be sorted after document <code>b</code>.
 		/// </returns>
-		public override bool LessThan(System.Object a, System.Object b)
+        public override bool LessThan(ScoreDoc docA1, ScoreDoc docB1)
 		{
-			FieldDoc docA = (FieldDoc) a;
-			FieldDoc docB = (FieldDoc) b;
+
+            FieldDoc docA = (FieldDoc)docA1;
+            FieldDoc docB = (FieldDoc)docB1;
 			int n = fields.Length;
 			int c = 0;
 			for (int i = 0; i < n && c == 0; ++i)

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldSortedHitQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldSortedHitQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldSortedHitQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldSortedHitQueue.cs Thu Apr 28 20:19:19 2011
@@ -18,7 +18,7 @@
 using System;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -40,7 +40,7 @@ namespace Lucene.Net.Search
 	/// <deprecated> see {@link FieldValueHitQueue}
 	/// </deprecated>
     [Obsolete("see FieldValueHitQueue")]
-	public class FieldSortedHitQueue:PriorityQueue
+	public class FieldSortedHitQueue:PriorityQueue<ScoreDoc>
 	{
 		internal class AnonymousClassCache:FieldCacheImpl.Cache
 		{
@@ -462,17 +462,17 @@ namespace Lucene.Net.Search
 		// keeps track of the score isn't accidentally bypassed.  
 		// inherit javadoc
         [Obsolete("Lucene.Net-2.9.1. This method overrides obsolete member Lucene.Net.Util.PriorityQueue.Insert(object)")]
-		public override bool Insert(System.Object fdoc)
-		{
-			return Insert((FieldDoc) fdoc);
+        public override bool Insert(ScoreDoc fdoc)
+        {
+			return Insert(fdoc);
 		}
 		
 		// This overrides PriorityQueue.insertWithOverflow() so that
 		// updateMaxScore(FieldDoc) that keeps track of the score isn't accidentally
 		// bypassed.
-		public override System.Object InsertWithOverflow(System.Object element)
+		public override ScoreDoc InsertWithOverflow(ScoreDoc element)
 		{
-			UpdateMaxScore((FieldDoc) element);
+			UpdateMaxScore((FieldDoc)element);
 			return base.InsertWithOverflow(element);
 		}
 		
@@ -483,11 +483,8 @@ namespace Lucene.Net.Search
 		/// </param>
 		/// <returns> <code>true</code> if document <code>a</code> should be sorted after document <code>b</code>.
 		/// </returns>
-		public override bool LessThan(System.Object a, System.Object b)
+        public override bool LessThan(ScoreDoc docA, ScoreDoc docB)
 		{
-			ScoreDoc docA = (ScoreDoc) a;
-			ScoreDoc docB = (ScoreDoc) b;
-			
 			// run comparators
 			int n = comparators.Length;
 			int c = 0;

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldValueHitQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldValueHitQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldValueHitQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FieldValueHitQueue.cs Thu Apr 28 20:19:19 2011
@@ -17,7 +17,7 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -43,10 +43,10 @@ namespace Lucene.Net.Search
 	/// </seealso>
 	/// <seealso cref="FieldCache">
 	/// </seealso>
-	public abstract class FieldValueHitQueue:PriorityQueue
+	public abstract class FieldValueHitQueue:PriorityQueue<FieldValueHitQueue.Entry>
 	{
 		
-		internal sealed class Entry
+		public sealed class Entry
 		{
 			internal int slot;
 			internal int docID;
@@ -100,11 +100,8 @@ namespace Lucene.Net.Search
 			/// </param>
 			/// <returns> <code>true</code> if document <code>a</code> should be sorted after document <code>b</code>.
 			/// </returns>
-			public override bool LessThan(System.Object a, System.Object b)
+            public override bool LessThan(Entry hitA, Entry hitB)
 			{
-				Entry hitA = (Entry) a;
-				Entry hitB = (Entry) b;
-				
 				System.Diagnostics.Debug.Assert(hitA != hitB);
 				System.Diagnostics.Debug.Assert(hitA.slot != hitB.slot);
 				
@@ -142,12 +139,9 @@ namespace Lucene.Net.Search
 				
 				Initialize(size);
 			}
-			
-			public override bool LessThan(System.Object a, System.Object b)
-			{
-				Entry hitA = (Entry) a;
-				Entry hitB = (Entry) b;
-				
+
+            public override bool LessThan(Entry hitA, Entry hitB)
+            {
 				System.Diagnostics.Debug.Assert(hitA != hitB);
 				System.Diagnostics.Debug.Assert(hitA.slot != hitB.slot);
 				
@@ -226,8 +220,8 @@ namespace Lucene.Net.Search
 		protected internal SortField[] fields;
 		protected internal FieldComparator[] comparators;
 		protected internal int[] reverseMul;
-		
-		public abstract override bool LessThan(System.Object a, System.Object b);
+
+        public abstract override bool LessThan(Entry a, Entry b);
 		
 		/// <summary> Given a queue Entry, creates a corresponding FieldDoc
 		/// that contains the values used to sort the given document.

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FuzzyQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FuzzyQuery.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FuzzyQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/FuzzyQuery.cs Thu Apr 28 20:19:19 2011
@@ -19,7 +19,7 @@ using System;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
 using Term = Lucene.Net.Index.Term;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 using ToStringUtils = Lucene.Net.Util.ToStringUtils;
 
 namespace Lucene.Net.Search
@@ -219,7 +219,7 @@ namespace Lucene.Net.Search
 			}
 		}
 		
-		protected internal class ScoreTermQueue:PriorityQueue
+		protected internal class ScoreTermQueue:PriorityQueue<ScoreTerm>
 		{
 			
 			public ScoreTermQueue(int size)
@@ -230,10 +230,8 @@ namespace Lucene.Net.Search
 			/* (non-Javadoc)
 			* @see Lucene.Net.Util.PriorityQueue#lessThan(java.lang.Object, java.lang.Object)
 			*/
-			public override bool LessThan(System.Object a, System.Object b)
+            public override bool LessThan(ScoreTerm termA, ScoreTerm termB)
 			{
-				ScoreTerm termA = (ScoreTerm) a;
-				ScoreTerm termB = (ScoreTerm) b;
 				if (termA.score == termB.score)
 					return termA.term.CompareTo(termB.term) > 0;
 				else

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/HitQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/HitQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/HitQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/HitQueue.cs Thu Apr 28 20:19:19 2011
@@ -17,12 +17,12 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
 	
-	public sealed class HitQueue:PriorityQueue
+	public sealed class HitQueue:PriorityQueue<ScoreDoc>
 	{
 		
 		private bool prePopulate;
@@ -73,18 +73,16 @@ namespace Lucene.Net.Search
 		}
 		
 		// Returns null if prePopulate is false.
-		protected internal override System.Object GetSentinelObject()
+        protected internal override ScoreDoc GetSentinelObject()
 		{
 			// Always set the doc Id to MAX_VALUE so that it won't be favored by
 			// lessThan. This generally should not happen since if score is not NEG_INF,
 			// TopScoreDocCollector will always add the object to the queue.
 			return !prePopulate?null:new ScoreDoc(System.Int32.MaxValue, System.Single.NegativeInfinity);
 		}
-		
-		public override bool LessThan(System.Object a, System.Object b)
+
+        public override bool LessThan(ScoreDoc hitA, ScoreDoc hitB)
 		{
-			ScoreDoc hitA = (ScoreDoc) a;
-			ScoreDoc hitB = (ScoreDoc) b;
 			if (hitA.score == hitB.score)
 				return hitA.doc > hitB.doc;
 			else

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/IndexSearcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/IndexSearcher.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/IndexSearcher.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/IndexSearcher.cs Thu Apr 28 20:19:19 2011
@@ -195,7 +195,7 @@ namespace Lucene.Net.Search
 			}
             nDocs = Math.Min(nDocs, reader.MaxDoc());
 
-			TopScoreDocCollector collector = TopScoreDocCollector.create(nDocs, !weight.ScoresDocsOutOfOrder());
+			TopScoreDocCollector collector = TopScoreDocCollector.Create(nDocs, !weight.ScoresDocsOutOfOrder());
 			Search(weight, filter, collector);
 			return collector.TopDocs();
 		}
@@ -268,7 +268,7 @@ namespace Lucene.Net.Search
 				return (TopFieldDocs) collector.TopDocs();
 			}
 			
-			TopFieldCollector collector2 = TopFieldCollector.create(sort, nDocs, fillFields, fieldSortDoTrackScores, fieldSortDoMaxScore, !weight.ScoresDocsOutOfOrder());
+			TopFieldCollector collector2 = TopFieldCollector.Create(sort, nDocs, fillFields, fieldSortDoTrackScores, fieldSortDoMaxScore, !weight.ScoresDocsOutOfOrder());
 			Search(weight, filter, collector2);
 			return (TopFieldDocs) collector2.TopDocs();
 		}

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/MultiSearcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/MultiSearcher.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/MultiSearcher.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/MultiSearcher.cs Thu Apr 28 20:19:19 2011
@@ -330,7 +330,7 @@ namespace Lucene.Net.Search
 					// merge scoreDocs into hq
 					ScoreDoc scoreDoc = scoreDocs[j];
 					scoreDoc.doc += starts[i]; // convert doc
-					if (!hq.Insert(scoreDoc))
+					if (!hq.Insert((FieldDoc)scoreDoc))
 						break; // no more scores > minScore
 				}
 			}

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/ParallelMultiSearcher.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/ParallelMultiSearcher.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/ParallelMultiSearcher.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/ParallelMultiSearcher.cs Thu Apr 28 20:19:19 2011
@@ -19,7 +19,7 @@ using System;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
 using Term = Lucene.Net.Index.Term;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -245,7 +245,7 @@ namespace Lucene.Net.Search
 		private int nDocs;
 		private TopDocs docs;
 		private int i;
-		private PriorityQueue hq;
+        private PriorityQueue<ScoreDoc> hq;
 		private int[] starts;
 		private System.IO.IOException ioe;
 		private Sort sort;
@@ -256,7 +256,7 @@ namespace Lucene.Net.Search
 			this.weight = weight;
 			this.filter = filter;
 			this.nDocs = nDocs;
-			this.hq = hq;
+            this.hq = hq;
 			this.i = i;
 			this.starts = starts;
 		}
@@ -267,7 +267,7 @@ namespace Lucene.Net.Search
 			this.weight = weight;
 			this.filter = filter;
 			this.nDocs = nDocs;
-			this.hq = hq;
+            this.hq = hq;
 			this.i = i;
 			this.starts = starts;
 			this.sort = sort;
@@ -303,13 +303,14 @@ namespace Lucene.Net.Search
 							for (int j2 = 0; j2 < docs.ScoreDocs.Length; j2++)
 							{
 								FieldDoc fd = (FieldDoc) docs.ScoreDocs[j2];
-								fd.fields[j] = (System.Int32) (((System.Int32) fd.fields[j]) + starts[i]);
+                                //DIGY?? No unit test for the line below
+								fd.fields[j] = (System.Int32) (((System.Int32) fd.fields[j]) + starts[i]); 
 							}
 							break;
 						}
 					}
 					
-					((FieldDocSortedHitQueue) hq).SetFields(docsFields.fields);
+					((FieldDocSortedHitQueue)hq).SetFields(docsFields.fields);
 				}
 				ScoreDoc[] scoreDocs = docs.ScoreDocs;
 				for (int j = 0; j < scoreDocs.Length; j++)

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/PhraseQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/PhraseQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/PhraseQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/PhraseQueue.cs Thu Apr 28 20:19:19 2011
@@ -17,22 +17,20 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
 	
-	sealed class PhraseQueue:PriorityQueue
+	sealed class PhraseQueue:PriorityQueue<PhrasePositions>
 	{
 		internal PhraseQueue(int size)
 		{
 			Initialize(size);
 		}
-		
-		public override bool LessThan(System.Object o1, System.Object o2)
+
+        public override bool LessThan(PhrasePositions pp1, PhrasePositions pp2)
 		{
-			PhrasePositions pp1 = (PhrasePositions) o1;
-			PhrasePositions pp2 = (PhrasePositions) o2;
 			if (pp1.doc == pp2.doc)
 				if (pp1.position == pp2.position)
 				// same doc and pp.position, so decide by actual term positions. 

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/NearSpansUnordered.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/NearSpansUnordered.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/NearSpansUnordered.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/NearSpansUnordered.cs Thu Apr 28 20:19:19 2011
@@ -19,7 +19,7 @@ using System;
 using System.Collections.Generic;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search.Spans
 {
@@ -32,8 +32,8 @@ namespace Lucene.Net.Search.Spans
 	public class NearSpansUnordered:Spans
 	{
 		private SpanNearQuery query;
-		
-		private System.Collections.IList ordered = new System.Collections.ArrayList(); // spans in query order
+
+        private List<SpansCell> ordered = new List<SpansCell>(); // spans in query order
 		private Spans[] subSpans;
 		private int slop; // from query
 		
@@ -48,7 +48,7 @@ namespace Lucene.Net.Search.Spans
 		private bool more = true; // true iff not done
 		private bool firstTime = true; // true before first next()
 		
-		private class CellQueue:PriorityQueue
+		private class CellQueue:PriorityQueue<SpansCell>
 		{
 			private void  InitBlock(NearSpansUnordered enclosingInstance)
 			{
@@ -68,11 +68,9 @@ namespace Lucene.Net.Search.Spans
 				InitBlock(enclosingInstance);
 				Initialize(size);
 			}
-			
-			public override bool LessThan(System.Object o1, System.Object o2)
-			{
-				SpansCell spans1 = (SpansCell) o1;
-				SpansCell spans2 = (SpansCell) o2;
+
+            public override bool LessThan(SpansCell spans1, SpansCell spans2)
+            {
 				if (spans1.Doc() == spans2.Doc())
 				{
 					return NearSpansOrdered.DocSpansOrdered(spans1, spans2);
@@ -365,7 +363,7 @@ namespace Lucene.Net.Search.Spans
 		{
 			for (int i = 0; more && i < ordered.Count; i++)
 			{
-				SpansCell cell = (SpansCell) ordered[i];
+				SpansCell cell = ordered[i];
 				if (next)
 					more = cell.Next(); // move to first entry
 				if (more)

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/SpanOrQuery.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/SpanOrQuery.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/SpanOrQuery.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/Spans/SpanOrQuery.cs Thu Apr 28 20:19:19 2011
@@ -19,7 +19,7 @@ using System;
 using System.Collections.Generic;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 using ToStringUtils = Lucene.Net.Util.ToStringUtils;
 using Query = Lucene.Net.Search.Query;
 
@@ -311,7 +311,7 @@ namespace Lucene.Net.Search.Spans
 		}
 		
 		
-		private class SpanQueue:PriorityQueue
+		private class SpanQueue:PriorityQueue<Spans>
 		{
 			private void  InitBlock(SpanOrQuery enclosingInstance)
 			{
@@ -331,11 +331,9 @@ namespace Lucene.Net.Search.Spans
 				InitBlock(enclosingInstance);
 				Initialize(size);
 			}
-			
-			public override bool LessThan(System.Object o1, System.Object o2)
+
+            public override bool LessThan(Spans spans1, Spans spans2)
 			{
-				Spans spans1 = (Spans) o1;
-				Spans spans2 = (Spans) o2;
 				if (spans1.Doc() == spans2.Doc())
 				{
 					if (spans1.Start() == spans2.Start())

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocCollector.cs Thu Apr 28 20:19:19 2011
@@ -17,7 +17,7 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -45,7 +45,7 @@ namespace Lucene.Net.Search
 		protected internal int totalHits;
 		
 		/// <summary>The priority queue which holds the top-scoring documents. </summary>
-		protected internal PriorityQueue hq;
+		protected internal PriorityQueue<ScoreDoc> hq;
 		
 		/// <summary>Construct to collect a given number of hits.</summary>
 		/// <param name="numHits">the maximum number of hits to collect
@@ -58,7 +58,7 @@ namespace Lucene.Net.Search
 		/// constructor. It will be removed in a future release.
 		/// </deprecated>
         [Obsolete("use TopDocCollector(hq) instead. numHits is not used by this constructor. It will be removed in a future release.")]
-		internal TopDocCollector(int numHits, PriorityQueue hq)
+		internal TopDocCollector(int numHits, PriorityQueue<ScoreDoc> hq)
 		{
 			this.hq = hq;
 		}
@@ -66,7 +66,7 @@ namespace Lucene.Net.Search
 		/// <summary>Constructor to collect the top-scoring documents by using the given PQ.</summary>
 		/// <param name="hq">the PQ to use by this instance.
 		/// </param>
-		protected internal TopDocCollector(PriorityQueue hq)
+		protected internal TopDocCollector(PriorityQueue<ScoreDoc> hq)
 		{
 			this.hq = hq;
 		}

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocsCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocsCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocsCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopDocsCollector.cs Thu Apr 28 20:19:19 2011
@@ -17,7 +17,7 @@
 
 using System;
 
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -29,7 +29,7 @@ namespace Lucene.Net.Search
 	/// Extending classes can override {@link #TopDocs(int, int)} and
 	/// {@link #GetTotalHits()} in order to provide their own implementation.
 	/// </summary>
-	public abstract class TopDocsCollector:Collector
+	public abstract class TopDocsCollector<T>:Collector //where T : ScoreDoc //DIGY
 	{
 		
 		// This is used in case topDocs() is called with illegal parameters, or there
@@ -41,12 +41,12 @@ namespace Lucene.Net.Search
 		/// HitQueue for example aggregates the top scoring documents, while other PQ
 		/// implementations may hold documents sorted by other criteria.
 		/// </summary>
-		protected internal PriorityQueue pq;
+		protected internal PriorityQueue<T> pq;
 		
 		/// <summary>The total number of documents that the collector encountered. </summary>
 		protected internal int totalHits;
 		
-		protected internal TopDocsCollector(PriorityQueue pq)
+		protected internal TopDocsCollector(PriorityQueue<T> pq)
 		{
 			this.pq = pq;
 		}
@@ -58,7 +58,7 @@ namespace Lucene.Net.Search
 		{
 			for (int i = howMany - 1; i >= 0; i--)
 			{
-				results[i] = (ScoreDoc) pq.Pop();
+				results[i] = pq.Pop() as ScoreDoc; 
 			}
 		}
 		

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopFieldCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopFieldCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopFieldCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopFieldCollector.cs Thu Apr 28 20:19:19 2011
@@ -18,7 +18,7 @@
 using System;
 
 using IndexReader = Lucene.Net.Index.IndexReader;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 using Entry = Lucene.Net.Search.FieldValueHitQueue.Entry;
 
 namespace Lucene.Net.Search
@@ -33,7 +33,7 @@ namespace Lucene.Net.Search
 	/// <p/><b>NOTE:</b> This API is experimental and might change in
 	/// incompatible ways in the next release.<p/>
 	/// </summary>
-	public abstract class TopFieldCollector:TopDocsCollector
+	public abstract class TopFieldCollector:TopDocsCollector<Entry>
 	{
 		
 		// TODO: one optimization we could do is to pre-fill
@@ -61,7 +61,7 @@ namespace Lucene.Net.Search
 			{
 				// bottom.score is already set to Float.NaN in add().
 				bottom.docID = docBase + doc;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -174,7 +174,7 @@ namespace Lucene.Net.Search
 			{
 				bottom.docID = docBase + doc;
 				bottom.score = score;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -296,7 +296,7 @@ namespace Lucene.Net.Search
 			{
 				bottom.docID = docBase + doc;
 				bottom.score = score;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -417,7 +417,7 @@ namespace Lucene.Net.Search
 			{
 				// bottom.score is already set to Float.NaN in add().
 				bottom.docID = docBase + doc;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -601,7 +601,7 @@ namespace Lucene.Net.Search
 			{
 				bottom.docID = docBase + doc;
 				bottom.score = score;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -781,7 +781,7 @@ namespace Lucene.Net.Search
 			{
 				bottom.docID = docBase + doc;
 				bottom.score = score;
-				bottom = (Entry) pq.UpdateTop();
+				bottom = pq.UpdateTop();
 			}
 			
 			public override void  Collect(int doc)
@@ -970,7 +970,7 @@ namespace Lucene.Net.Search
 		// internal versions. If someone will define a constructor with any other
 		// visibility, then anyone will be able to extend the class, which is not what
 		// we want.
-		private TopFieldCollector(PriorityQueue pq, int numHits, bool fillFields):base(pq)
+		private TopFieldCollector(PriorityQueue<Entry> pq, int numHits, bool fillFields):base(pq)
 		{
 			this.numHits = numHits;
 			this.fillFields = fillFields;
@@ -1012,7 +1012,7 @@ namespace Lucene.Net.Search
 		/// the sort criteria.
 		/// </returns>
 		/// <throws>  IOException </throws>
-		public static TopFieldCollector create(Sort sort, int numHits, bool fillFields, bool trackDocScores, bool trackMaxScore, bool docsScoredInOrder)
+		public static TopFieldCollector Create(Sort sort, int numHits, bool fillFields, bool trackDocScores, bool trackMaxScore, bool docsScoredInOrder)
 		{
 			if (sort.fields.Length == 0)
 			{
@@ -1089,7 +1089,7 @@ namespace Lucene.Net.Search
 		
 		internal void  Add(int slot, int doc, float score)
 		{
-			bottom = (Entry) pq.Add(new Entry(slot, docBase + doc, score));
+			bottom = pq.Add(new Entry(slot, docBase + doc, score));
 			queueFull = totalHits == numHits;
 		}
 		
@@ -1113,7 +1113,7 @@ namespace Lucene.Net.Search
 			{
 				for (int i = howMany - 1; i >= 0; i--)
 				{
-					Entry entry = (Entry) pq.Pop();
+					Entry entry = pq.Pop();
 					results[i] = new FieldDoc(entry.docID, entry.score);
 				}
 			}

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopScoreDocCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopScoreDocCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopScoreDocCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Search/TopScoreDocCollector.cs Thu Apr 28 20:19:19 2011
@@ -34,7 +34,7 @@ namespace Lucene.Net.Search
     /// collector will not properly collect hits with such
     /// scores.
 	/// </summary>
-	public abstract class TopScoreDocCollector:TopDocsCollector
+	public abstract class TopScoreDocCollector:TopDocsCollector<ScoreDoc>
 	{
 		
 		// Assumes docs are scored in order.
@@ -111,7 +111,7 @@ namespace Lucene.Net.Search
 		/// <code>numHits</code>, and fill the array with sentinel
 		/// objects.
 		/// </summary>
-		public static TopScoreDocCollector create(int numHits, bool docsScoredInOrder)
+		public static TopScoreDocCollector Create(int numHits, bool docsScoredInOrder)
 		{
 			
 			if (docsScoredInOrder)

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Util/PriorityQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Util/PriorityQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Util/PriorityQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/core/Util/PriorityQueue.cs Thu Apr 28 20:19:19 2011
@@ -28,16 +28,16 @@ namespace Lucene.Net.Util
 	/// length <code>maxSize+1</code>, in {@link #initialize}.
 	/// 
 	/// </summary>
-	public abstract class PriorityQueue
+	public abstract class PriorityQueue<T>
 	{
 		private int size;
 		private int maxSize;
-		protected internal System.Object[] heap;
+		protected internal T[] heap;
 		
 		/// <summary>Determines the ordering of objects in this priority queue.  Subclasses
 		/// must define this one method. 
 		/// </summary>
-		public abstract bool LessThan(System.Object a, System.Object b);
+		public abstract bool LessThan(T a, T b);
 		
 		/// <summary> This method can be overridden by extending classes to return a sentinel
 		/// object which will be used by {@link #Initialize(int)} to fill the queue, so
@@ -78,9 +78,9 @@ namespace Lucene.Net.Util
 		/// <returns> the sentinel object to use to pre-populate the queue, or null if
 		/// sentinel objects are not supported.
 		/// </returns>
-		protected internal virtual System.Object GetSentinelObject()
+		protected internal virtual T GetSentinelObject()
 		{
-			return null;
+			return default(T);
 		}
 		
 		/// <summary>Subclass constructors must call this. </summary>
@@ -112,12 +112,12 @@ namespace Lucene.Net.Util
                     heapSize = maxSize + 1;
                 }
             }
-			heap = new System.Object[heapSize];
+			heap = new T[heapSize];
 			this.maxSize = maxSize;
 			
 			// If sentinel objects are supported, populate the queue with them
-			System.Object sentinel = GetSentinelObject();
-			if (sentinel != null)
+			T sentinel = GetSentinelObject();
+            if (sentinel != null  &&  !sentinel.Equals(default(T)) )
 			{
 				heap[1] = sentinel;
 				for (int i = 2; i < heap.Length; i++)
@@ -137,7 +137,7 @@ namespace Lucene.Net.Util
 		/// saving an additional call to {@link #Top()}.
 		/// </deprecated>
         [Obsolete("use Add(Object) which returns the new top object, saving an additional call to Top().")]
-		public void  Put(System.Object element)
+		public void  Put(T element)
 		{
 			size++;
 			heap[size] = element;
@@ -151,7 +151,7 @@ namespace Lucene.Net.Util
 		/// </summary>
 		/// <returns> the new 'top' element in the queue.
 		/// </returns>
-		public System.Object Add(System.Object element)
+		public T Add(T element)
 		{
 			size++;
 			heap[size] = element;
@@ -171,9 +171,9 @@ namespace Lucene.Net.Util
 		/// encourages objects reuse.
 		/// </deprecated>
         [Obsolete("use InsertWithOverflow(Object) instead, which encourages objects reuse.")]
-		public virtual bool Insert(System.Object element)
+		public virtual bool Insert(T element)
 		{
-			return InsertWithOverflow(element) != element;
+            return !element.Equals(InsertWithOverflow(element));
 		}
 		
 		/// <summary> insertWithOverflow() is the same as insert() except its
@@ -185,16 +185,16 @@ namespace Lucene.Net.Util
 		/// heap and now has been replaced by a larger one, or null
 		/// if the queue wasn't yet full with maxSize elements.
 		/// </summary>
-		public virtual System.Object InsertWithOverflow(System.Object element)
+		public virtual T InsertWithOverflow(T element)
 		{
 			if (size < maxSize)
 			{
 				Put(element);
-				return null;
+				return default(T);
 			}
 			else if (size > 0 && !LessThan(element, heap[1]))
 			{
-				System.Object ret = heap[1];
+				T ret = heap[1];
 				heap[1] = element;
 				AdjustTop();
 				return ret;
@@ -206,7 +206,7 @@ namespace Lucene.Net.Util
 		}
 		
 		/// <summary>Returns the least element of the PriorityQueue in constant time. </summary>
-		public System.Object Top()
+		public T Top()
 		{
 			// We don't need to check size here: if maxSize is 0,
 			// then heap is length 2 array with both entries null.
@@ -217,19 +217,19 @@ namespace Lucene.Net.Util
 		/// <summary>Removes and returns the least element of the PriorityQueue in log(size)
 		/// time. 
 		/// </summary>
-		public System.Object Pop()
+		public T Pop()
 		{
 			if (size > 0)
 			{
-				System.Object result = heap[1]; // save first value
+				T result = heap[1]; // save first value
 				heap[1] = heap[size]; // move last to first
-				heap[size] = null; // permit GC of objects
+				heap[size] = default(T); // permit GC of objects
 				size--;
 				DownHeap(); // adjust heap
 				return result;
 			}
 			else
-				return null;
+				return default(T);
 		}
 		
 		/// <summary> Should be called when the Object at top changes values. Still log(n) worst
@@ -277,7 +277,7 @@ namespace Lucene.Net.Util
 		/// </summary>
 		/// <returns> the new 'top' element.
 		/// </returns>
-		public System.Object UpdateTop()
+		public T UpdateTop()
 		{
 			DownHeap();
 			return heap[1];
@@ -294,7 +294,7 @@ namespace Lucene.Net.Util
 		{
 			for (int i = 0; i <= size; i++)
 			{
-				heap[i] = null;
+				heap[i] = default(T);
 			}
 			size = 0;
 		}
@@ -302,7 +302,7 @@ namespace Lucene.Net.Util
 		private void  UpHeap()
 		{
 			int i = size;
-			System.Object node = heap[i]; // save bottom node
+			T node = heap[i]; // save bottom node
 			int j = SupportClass.Number.URShift(i, 1);
 			while (j > 0 && LessThan(node, heap[j]))
 			{
@@ -316,7 +316,7 @@ namespace Lucene.Net.Util
 		private void  DownHeap()
 		{
 			int i = 1;
-			System.Object node = heap[i]; // save top node
+			T node = heap[i]; // save top node
 			int j = i << 1; // find smaller child
 			int k = j + 1;
 			if (k <= size && LessThan(heap[k], heap[j]))

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/JustCompileSearch.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/JustCompileSearch.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/JustCompileSearch.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/JustCompileSearch.cs Thu Apr 28 20:19:19 2011
@@ -25,7 +25,7 @@ using CorruptIndexException = Lucene.Net
 using IndexReader = Lucene.Net.Index.IndexReader;
 using Term = Lucene.Net.Index.Term;
 using TermPositions = Lucene.Net.Index.TermPositions;
-using PriorityQueue = Lucene.Net.Util.PriorityQueue;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Search
 {
@@ -485,10 +485,10 @@ namespace Lucene.Net.Search
 			}
 		}
 		
-		internal sealed class JustCompileTopDocsCollector:TopDocsCollector
+		internal sealed class JustCompileTopDocsCollector:TopDocsCollector<ScoreDoc>
 		{
 			
-			internal JustCompileTopDocsCollector(PriorityQueue pq):base(pq)
+			internal JustCompileTopDocsCollector(PriorityQueue<ScoreDoc> pq):base(pq)
 			{
 			}
 			

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestElevationComparator.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestElevationComparator.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestElevationComparator.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestElevationComparator.cs Thu Apr 28 20:19:19 2011
@@ -74,7 +74,7 @@ namespace Lucene.Net.Search
 			
 			Sort sort = new Sort(new SortField[]{new SortField("id", new ElevationComparatorSource(priority), false), new SortField(null, SortField.SCORE, reversed)});
 			
-			TopDocsCollector topCollector = TopFieldCollector.create(sort, 50, false, true, true, true);
+			TopFieldCollector topCollector = TopFieldCollector.Create(sort, 50, false, true, true, true);
 			searcher.Search(newq, null, topCollector);
 			
 			TopDocs topDocs = topCollector.TopDocs(0, 10);

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestPositiveScoresOnlyCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestPositiveScoresOnlyCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestPositiveScoresOnlyCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestPositiveScoresOnlyCollector.cs Thu Apr 28 20:19:19 2011
@@ -109,7 +109,7 @@ namespace Lucene.Net.Search
 			}
 			
 			Scorer s = new SimpleScorer();
-			TopDocsCollector tdc = TopScoreDocCollector.create(scores.Length, true);
+            TopScoreDocCollector tdc = TopScoreDocCollector.Create(scores.Length, true);
 			Collector c = new PositiveScoresOnlyCollector(tdc);
 			c.SetScorer(s);
 			while (s.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestSort.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestSort.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestSort.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestSort.cs Thu Apr 28 20:19:19 2011
@@ -1002,7 +1002,7 @@ namespace Lucene.Net.Search
 			for (int i = 0; i < sort.Length; i++)
 			{
 				Query q = new MatchAllDocsQuery();
-				TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, false, false, false, true);
+				TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, false, false, false, true);
 				
 				full.Search(q, tdc);
 				
@@ -1023,7 +1023,7 @@ namespace Lucene.Net.Search
 			for (int i = 0; i < sort.Length; i++)
 			{
 				Query q = new MatchAllDocsQuery();
-				TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, true, false, false, true);
+				TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, true, false, false, true);
 				
 				full.Search(q, tdc);
 				
@@ -1046,7 +1046,7 @@ namespace Lucene.Net.Search
 			for (int i = 0; i < sort.Length; i++)
 			{
 				Query q = new MatchAllDocsQuery();
-				TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, true, true, false, true);
+				TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, true, true, false, true);
 				
 				full.Search(q, tdc);
 				
@@ -1069,7 +1069,7 @@ namespace Lucene.Net.Search
 			for (int i = 0; i < sort.Length; i++)
 			{
 				Query q = new MatchAllDocsQuery();
-				TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, true, true, true, true);
+                TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, true, true, true, true);
 				
 				full.Search(q, tdc);
 				
@@ -1110,7 +1110,7 @@ namespace Lucene.Net.Search
 				{
 					for (int j = 0; j < tfcOptions.Length; j++)
 					{
-						TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
+                        TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
 						
 						Assert.IsTrue(tdc.GetType().FullName.EndsWith("+" + actualTFCClasses[j]));
 						
@@ -1139,7 +1139,7 @@ namespace Lucene.Net.Search
 			Sort[] sort = new Sort[]{new Sort(SortField.FIELD_DOC), new Sort()};
 			for (int i = 0; i < sort.Length; i++)
 			{
-				TopDocsCollector tdc = TopFieldCollector.create(sort[i], 10, true, true, true, true);
+                TopFieldCollector tdc = TopFieldCollector.Create(sort[i], 10, true, true, true, true);
 				TopDocs td = tdc.TopDocs();
 				Assert.AreEqual(0, td.TotalHits);
 				Assert.IsTrue(System.Single.IsNaN(td.GetMaxScore()));

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopDocsCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopDocsCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopDocsCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopDocsCollector.cs Thu Apr 28 20:19:19 2011
@@ -35,7 +35,7 @@ namespace Lucene.Net.Search
 	public class TestTopDocsCollector:LuceneTestCase
 	{
 		
-		private sealed class MyTopsDocCollector:TopDocsCollector
+		private sealed class MyTopsDocCollector:TopDocsCollector<ScoreDoc>
 		{
 			
 			private int idx = 0;
@@ -99,11 +99,11 @@ namespace Lucene.Net.Search
 		
 		private Directory dir = new RAMDirectory();
 		
-		private TopDocsCollector doSearch(int numResults)
+		private TopDocsCollector<ScoreDoc> doSearch(int numResults)
 		{
 			Query q = new MatchAllDocsQuery();
 			IndexSearcher searcher = new IndexSearcher(dir);
-			TopDocsCollector tdc = new MyTopsDocCollector(numResults);
+			TopDocsCollector<ScoreDoc> tdc = new MyTopsDocCollector(numResults);
 			searcher.Search(q, tdc);
 			searcher.Close();
 			return tdc;
@@ -137,7 +137,7 @@ namespace Lucene.Net.Search
 		public virtual void  TestInvalidArguments()
 		{
 			int numResults = 5;
-			TopDocsCollector tdc = doSearch(numResults);
+			TopDocsCollector<ScoreDoc> tdc = doSearch(numResults);
 			
 			// start < 0
 			Assert.AreEqual(0, tdc.TopDocs(- 1).ScoreDocs.Length);
@@ -158,21 +158,21 @@ namespace Lucene.Net.Search
         [Test]
 		public virtual void  TestZeroResults()
 		{
-			TopDocsCollector tdc = new MyTopsDocCollector(5);
+            TopDocsCollector<ScoreDoc> tdc = new MyTopsDocCollector(5);
 			Assert.AreEqual(0, tdc.TopDocs(0, 1).ScoreDocs.Length);
 		}
 		
         [Test]
 		public virtual void  TestFirstResultsPage()
 		{
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			Assert.AreEqual(10, tdc.TopDocs(0, 10).ScoreDocs.Length);
 		}
 		
         [Test]
 		public virtual void  TestSecondResultsPages()
 		{
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			// ask for more results than are available
 			Assert.AreEqual(5, tdc.TopDocs(10, 10).ScoreDocs.Length);
 			
@@ -188,14 +188,14 @@ namespace Lucene.Net.Search
         [Test]
 		public virtual void  TestGetAllResults()
 		{
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			Assert.AreEqual(15, tdc.TopDocs().ScoreDocs.Length);
 		}
 		
         [Test]
 		public virtual void  TestGetResultsFromStart()
 		{
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			// should bring all results
 			Assert.AreEqual(15, tdc.TopDocs(0).ScoreDocs.Length);
 			
@@ -208,7 +208,7 @@ namespace Lucene.Net.Search
 		public virtual void  TestMaxScore()
 		{
 			// ask for all results
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			TopDocs td = tdc.TopDocs();
 			Assert.AreEqual(MAX_SCORE, td.GetMaxScore(), 0f);
 			
@@ -223,7 +223,7 @@ namespace Lucene.Net.Search
         [Test]
 		public virtual void  TestResultsOrder()
 		{
-			TopDocsCollector tdc = doSearch(15);
+            TopDocsCollector<ScoreDoc> tdc = doSearch(15);
 			ScoreDoc[] sd = tdc.TopDocs().ScoreDocs;
 			
 			Assert.AreEqual(MAX_SCORE, sd[0].score, 0f);

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopScoreDocCollector.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopScoreDocCollector.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopScoreDocCollector.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Search/TestTopScoreDocCollector.cs Thu Apr 28 20:19:19 2011
@@ -76,7 +76,7 @@ namespace Lucene.Net.Search
 				IndexSearcher searcher = new IndexSearcher(dir);
 				for (int i = 0; i < inOrder.Length; i++)
 				{
-					TopDocsCollector tdc = TopScoreDocCollector.create(3, inOrder[i]);
+                    TopScoreDocCollector tdc = TopScoreDocCollector.Create(3, inOrder[i]);
 					Assert.AreEqual("Lucene.Net.Search.TopScoreDocCollector+" + actualTSDCClass[i], tdc.GetType().FullName);
 					
 					searcher.Search(new MatchAllDocsQuery(), tdc);

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestOpenBitSet.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestOpenBitSet.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestOpenBitSet.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestOpenBitSet.cs Thu Apr 28 20:19:19 2011
@@ -324,9 +324,9 @@ namespace Lucene.Net.Util
 		public virtual void  TestBig()
 		{
 			// uncomment to run a bigger test (~2 minutes).
-			// rand = newRandom();
-			// doRandomSets(2000,200000, 1);
-			// doRandomSets(2000,200000, 2);
+            //rand = NewRandom();
+            //DoRandomSets(2000,200000, 1);
+            //DoRandomSets(2000,200000, 2);
 		}
 		
 		[Test]

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestPriorityQueue.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestPriorityQueue.cs?rev=1097596&r1=1097595&r2=1097596&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestPriorityQueue.cs (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/test/core/Util/TestPriorityQueue.cs Thu Apr 28 20:19:19 2011
@@ -26,16 +26,16 @@ namespace Lucene.Net.Util
 	public class TestPriorityQueue:LuceneTestCase
 	{
 		
-		private class IntegerQueue:PriorityQueue
+		private class IntegerQueue:PriorityQueue<int>
 		{
 			public IntegerQueue(int count):base()
 			{
 				Initialize(count);
 			}
 			
-			public override bool LessThan(System.Object a, System.Object b)
+			public override bool LessThan(int a, int b)
 			{
-				return ((System.Int32) a) < ((System.Int32) b);
+				return  a < b;
 			}
 		}
 		
@@ -47,14 +47,14 @@ namespace Lucene.Net.Util
 		
 		public static void  TestPQ(int count, System.Random gen)
 		{
-			PriorityQueue pq = new IntegerQueue(count);
+			PriorityQueue<int> pq = new IntegerQueue(count);
 			int sum = 0, sum2 = 0;
 			
 			for (int i = 0; i < count; i++)
 			{
 				int next = gen.Next();
 				sum += next;
-				pq.Put((System.Object) next);
+				pq.Put(next);
 			}
 			
 			//      Date end = new Date();
@@ -83,10 +83,10 @@ namespace Lucene.Net.Util
 		[Test]
 		public virtual void  TestClear()
 		{
-			PriorityQueue pq = new IntegerQueue(3);
-			pq.Put((System.Object) 2);
-			pq.Put((System.Object) 3);
-			pq.Put((System.Object) 1);
+			PriorityQueue<int> pq = new IntegerQueue(3);
+			pq.Put(2);
+			pq.Put(3);
+			pq.Put(1);
 			Assert.AreEqual(3, pq.Size());
 			pq.Clear();
 			Assert.AreEqual(0, pq.Size());
@@ -95,22 +95,22 @@ namespace Lucene.Net.Util
 		[Test]
 		public virtual void  TestFixedSize()
 		{
-			PriorityQueue pq = new IntegerQueue(3);
-			pq.Insert((System.Object) 2);
-			pq.Insert((System.Object) 3);
-			pq.Insert((System.Object) 1);
-			pq.Insert((System.Object) 5);
-			pq.Insert((System.Object) 7);
-			pq.Insert((System.Object) 1);
+			PriorityQueue<int> pq = new IntegerQueue(3);
+			pq.Insert(2);
+			pq.Insert(3);
+			pq.Insert(1);
+			pq.Insert(5);
+			pq.Insert(7);
+			pq.Insert(1);
 			Assert.AreEqual(3, pq.Size());
-			Assert.AreEqual(3, ((System.Int32) pq.Top()));
+			Assert.AreEqual(3, pq.Top());
 		}
 		
 		[Test]
 		public virtual void  TestInsertWithOverflow()
 		{
 			int size = 4;
-			PriorityQueue pq = new IntegerQueue(size);
+			PriorityQueue<int> pq = new IntegerQueue(size);
 			System.Int32 i1 = 2;
 			System.Int32 i2 = 3;
 			System.Int32 i3 = 1;
@@ -118,10 +118,10 @@ namespace Lucene.Net.Util
 			System.Int32 i5 = 7;
 			System.Int32 i6 = 1;
 			
-			Assert.IsNull(pq.InsertWithOverflow(i1));
-			Assert.IsNull(pq.InsertWithOverflow(i2));
-			Assert.IsNull(pq.InsertWithOverflow(i3));
-			Assert.IsNull(pq.InsertWithOverflow(i4));
+			Assert.AreEqual(default(int),pq.InsertWithOverflow(i1));
+            Assert.AreEqual(default(int), pq.InsertWithOverflow(i2));
+            Assert.AreEqual(default(int), pq.InsertWithOverflow(i3));
+            Assert.AreEqual(default(int), pq.InsertWithOverflow(i4));
 			Assert.IsTrue((int) pq.InsertWithOverflow(i5) == i3); // i3 should have been dropped
 			Assert.IsTrue((int) pq.InsertWithOverflow(i6) == i6); // i6 should not have been inserted
 			Assert.AreEqual(size, pq.Size());