Author: ccurrens
Date: Thu Nov 17 06:01:45 2011
New Revision: 1203064

URL: http://svn.apache.org/viewvc?rev=1203064&view=rev
Log:
Fixed index and search tests, started more core porting to pass tests

Removed:
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommitPoint.cs
Modified:
    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/CompoundFileWriter.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/DirectoryReader.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/FieldSortedTermVectorMapper.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommit.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/SortedTermVectorMapper.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Lucene.Net.csproj
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/MultiSearcher.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/ParallelMultiSearcher.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestBackwardsCompatibility.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexReader.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestTermVectorsReader.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestBoolean2.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermScorer.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermVectors.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestWildcard.cs
    
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/UpdatedTests.txt

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=1203064&r1=1203063&r2=1203064&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 06:01:45 2011
@@ -88,21 +88,21 @@ index\
        index\CharBlockPool.java - IDENTICAL
        index\CheckIndex.java - PORTED
        index\CompoundFileReader.java - PORTED
-       index\CompoundFileWriter.java - Text files are different
+       index\CompoundFileWriter.java - PORTED
        index\ConcurrentMergeScheduler.java - PORTED
        index\CorruptIndexException.java - IDENTICAL
-       index\DefaultSkipListReader.java - Text files are different
-       index\DefaultSkipListWriter.java - Text files are different
+       index\DefaultSkipListReader.java - PORTED
+       index\DefaultSkipListWriter.java - PORTED
        index\DirectoryOwningReader.java - Removed in 3.x
-       index\DirectoryReader.java - Text files are different
+       index\DirectoryReader.java - PORTED
        index\DocConsumer.java - PORTED
        index\DocConsumerPerThread.java - IDENTICAL
        index\DocFieldConsumer.java - PORTED
        index\DocFieldConsumerPerField.java - IDENTICAL
        index\DocFieldConsumerPerThread.java - IDENTICAL
        index\DocFieldConsumers.java - PORTED
-       index\DocFieldConsumersPerField.java - Text files are different
-       index\DocFieldConsumersPerThread.java - Text files are different
+       index\DocFieldConsumersPerField.java - PORTED
+       index\DocFieldConsumersPerThread.java - PORTED
        index\DocFieldProcessor.java - PORTED
        index\DocFieldProcessorPerField.java - IDENTICAL
        index\DocFieldProcessorPerThread.java - PORTED
@@ -111,11 +111,11 @@ index\
        index\DocInverterPerThread.java - PORTED
        index\DocumentsWriter.java - PORTED
        index\DocumentsWriterThreadState.java - PORTED
-       index\FieldInfo.java - Text files are different
+       index\FieldInfo.java - PORTED
        index\FieldInfos.java - PORTED
        index\FieldInvertState.java - IDENTICAL
        index\FieldReaderException.java - IDENTICAL
-       index\FieldSortedTermVectorMapper.java - Text files are different
+       index\FieldSortedTermVectorMapper.java - PORTED
        index\FieldsReader.java - PORTED
        index\FieldsWriter.java - PORTED
        index\FilterIndexReader.java - PORTED
@@ -131,7 +131,7 @@ index\
        index\FreqProxTermsWriter.java - Text files are different
        index\FreqProxTermsWriterPerField.java - Text files are different
        index\FreqProxTermsWriterPerThread.java - Text files are different
-       index\IndexCommit.java - Text files are different
+       index\IndexCommit.java - DONE
        index\IndexCommitPoint.java - Removed in 3.x
        index\IndexDeletionPolicy.java - PORTED
        index\IndexFileDeleter.java - PORTED
@@ -154,7 +154,7 @@ index\
        index\MergeDocIDRemapper.java - IDENTICAL
        index\MergePolicy.java - PORTED
        index\MergeScheduler.java - IDENTICAL
-       index\MultiLevelSkipListReader.java - Text files are different
+       index\MultiLevelSkipListReader.java - PORTED
        index\MultiLevelSkipListWriter.java - IDENTICAL
        index\MultipleTermPositions.java - PORTED
        index\MultiReader.java - PORTED
@@ -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 - DONE
+       index\ParallelReader.java - PORTED
        index\Payload.java - Text files are different
        index\PositionBasedTermVectorMapper.java - Text files are different
        index\RawPostingList.java - IDENTICAL
@@ -183,7 +183,7 @@ index\
        index\SegmentWriteState.java - PORTED
        index\SerialMergeScheduler.java - Text files are different
        index\SnapshotDeletionPolicy.java - PORTED
-       index\SortedTermVectorMapper.java - Text files are different
+       index\SortedTermVectorMapper.java - PORTEDS
        index\StaleReaderException.java - IDENTICAL
        index\StoredFieldsWriter.java - Text files are different
        index\StoredFieldsWriterPerThread.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 - DONE
-       Searcher.java - DONE
+       Searchable.java - PORTED
+       Searcher.java - PORTED
        Similarity.java - PORTED
        SimilarityDelegator.java - PORTED
        SingleTermEnum.java - PORTED

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/CompoundFileWriter.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/CompoundFileWriter.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/CompoundFileWriter.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/CompoundFileWriter.cs
 Thu Nov 17 06:01:45 2011
@@ -16,7 +16,7 @@
  */
 
 using System;
-
+using System.Collections.Generic;
 using Directory = Lucene.Net.Store.Directory;
 using IndexInput = Lucene.Net.Store.IndexInput;
 using IndexOutput = Lucene.Net.Store.IndexOutput;
@@ -43,11 +43,7 @@ namespace Lucene.Net.Index
        /// file. The {directory} that follows has that many entries. Each 
directory entry
        /// contains a long pointer to the start of this file's data section, 
and a String
        /// with that file's name.
-       /// 
-       /// 
        /// </summary>
-       /// <version>  $Id: CompoundFileWriter.java 690539 2008-08-30 17:33:06Z 
mikemccand $
-       /// </version>
        public sealed class CompoundFileWriter
        {
                
@@ -66,8 +62,8 @@ namespace Lucene.Net.Index
                
                private Directory directory;
                private System.String fileName;
-        private System.Collections.Hashtable ids;
-               private System.Collections.ArrayList entries;
+        private HashSet<string> ids;
+               private LinkedList<FileEntry> entries;
                private bool merged = false;
                private SegmentMerger.CheckAbort checkAbort;
                
@@ -88,8 +84,8 @@ namespace Lucene.Net.Index
                        this.checkAbort = checkAbort;
                        directory = dir;
                        fileName = name;
-            ids = new System.Collections.Hashtable();
-                       entries = new System.Collections.ArrayList();
+            ids = new HashSet<string>();
+                       entries = new LinkedList<FileEntry>();
                }
                
                /// <summary>Returns the directory of the compound file. 
</summary>
@@ -123,7 +119,7 @@ namespace Lucene.Net.Index
                        
             try
             {
-                ids.Add(file, file);
+                ids.Add(file);
             }
             catch (Exception)
             {
@@ -132,7 +128,7 @@ namespace Lucene.Net.Index
                        
                        FileEntry entry = new FileEntry();
                        entry.file = file;
-                       entries.Add(entry);
+                       entries.AddLast(entry);
                }
                
                /// <summary>Merge files with the extensions added up to now.
@@ -165,11 +161,9 @@ namespace Lucene.Net.Index
                                // Write the directory with all offsets at 0.
                                // Remember the positions of directory entries 
so that we can
                                // adjust the offsets later
-                               System.Collections.IEnumerator it = 
entries.GetEnumerator();
                                long totalSize = 0;
-                               while (it.MoveNext())
+                               foreach(FileEntry fe in entries)
                                {
-                                       FileEntry fe = (FileEntry) it.Current;
                                        fe.directoryOffset = 
os.GetFilePointer();
                                        os.WriteLong(0); // for now
                                        os.WriteString(fe.file);
@@ -188,19 +182,15 @@ namespace Lucene.Net.Index
                                // Open the files and copy their data into the 
stream.
                                // Remember the locations of each file's data 
section.
                                byte[] buffer = new byte[16384];
-                               it = entries.GetEnumerator();
-                               while (it.MoveNext())
+                               foreach(FileEntry fe in entries)
                                {
-                                       FileEntry fe = (FileEntry) it.Current;
                                        fe.dataOffset = os.GetFilePointer();
                                        CopyFile(fe, os, buffer);
                                }
                                
                                // Write the data offsets into the directory of 
the compound stream
-                               it = entries.GetEnumerator();
-                               while (it.MoveNext())
+                               foreach(FileEntry fe in entries)
                                {
-                                       FileEntry fe = (FileEntry) it.Current;
                                        os.Seek(fe.directoryOffset);
                                        os.WriteLong(fe.dataOffset);
                                }

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/DirectoryReader.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/DirectoryReader.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/DirectoryReader.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/DirectoryReader.cs
 Thu Nov 17 06:01:45 2011
@@ -254,15 +254,14 @@ namespace Lucene.Net.Index
             
             // we put the old SegmentReaders in a map, that allows us
             // to lookup a reader using its segment name
-            // TODO: Leave as Object or java's Integer class?
-            System.Collections.Generic.IDictionary<string, object> 
segmentReaders = new HashMap<string, object>();
+            System.Collections.Generic.IDictionary<string, int> segmentReaders 
= new HashMap<string, int>();
             
             if (oldReaders != null)
             {
                 // create a Map SegmentName->SegmentReader
                 for (int i = 0; i < oldReaders.Length; i++)
                 {
-                    segmentReaders[oldReaders[i].GetSegmentName()] = 
(System.Int32) i;
+                    segmentReaders[oldReaders[i].GetSegmentName()] = i;
                 }
             }
             
@@ -275,8 +274,7 @@ namespace Lucene.Net.Index
             for (int i = infos.Count - 1; i >= 0; i--)
             {
                 // find SegmentReader for this segment
-                int? oldReaderIndex = (int?)segmentReaders[infos.Info(i).name];
-                if (oldReaderIndex.HasValue == false)
+                if (!segmentReaders.ContainsKey(infos.Info(i).name))
                 {
                     // this is a new segment, no old SegmentReader can be 
reused
                     newReaders[i] = null;
@@ -284,7 +282,7 @@ namespace Lucene.Net.Index
                 else
                 {
                     // there is an old reader for this segment - we'll try to 
reopen it
-                    newReaders[i] = oldReaders[oldReaderIndex.Value];
+                    newReaders[i] = 
oldReaders[segmentReaders[infos.Info(i).name]];
                 }
                 
                 bool success = false;
@@ -359,7 +357,7 @@ namespace Lucene.Net.Index
             {
                 foreach(var entry in oldNormsCache)
                 {
-                    System.String field = (System.String) entry.Key;
+                    System.String field = entry.Key;
                     if (!HasNorms(field))
                     {
                         continue;
@@ -371,17 +369,17 @@ namespace Lucene.Net.Index
                     
                     for (int i = 0; i < subReaders.Length; i++)
                     {
-                        int? oldReaderIndex = 
(int?)segmentReaders[subReaders[i].GetSegmentName()];
-
+                        int oldReaderIndex = 
segmentReaders[subReaders[i].GetSegmentName()];
+                        
                         // this SegmentReader was not re-opened, we can copy 
all of its norms 
-                        if (oldReaderIndex.HasValue &&
-                             (oldReaders[oldReaderIndex.Value] == subReaders[i]
-                               || 
oldReaders[oldReaderIndex.Value].norms[field] == subReaders[i].norms[field]))
+                        if 
(segmentReaders.ContainsKey(subReaders[i].GetSegmentName()) &&
+                             (oldReaders[oldReaderIndex] == subReaders[i]
+                               || oldReaders[oldReaderIndex].norms[field] == 
subReaders[i].norms[field]))
                         {
                             // we don't have to synchronize here: either this 
constructor is called from a SegmentReader,
                             // in which case no old norms cache is present, or 
it is called from MultiReader.reopen(),
                             // which is synchronized
-                            Array.Copy(oldBytes, 
oldStarts[oldReaderIndex.Value], bytes, starts[i], starts[i + 1] - starts[i]);
+                            Array.Copy(oldBytes, oldStarts[oldReaderIndex], 
bytes, starts[i], starts[i + 1] - starts[i]);
                         }
                         else
                         {

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/FieldSortedTermVectorMapper.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/FieldSortedTermVectorMapper.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/FieldSortedTermVectorMapper.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/FieldSortedTermVectorMapper.cs
 Thu Nov 17 06:01:45 2011
@@ -16,6 +16,8 @@
  */
 
 using System;
+using System.Collections.Generic;
+using Lucene.Net.Support;
 
 namespace Lucene.Net.Index
 {
@@ -26,20 +28,22 @@ namespace Lucene.Net.Index
        /// </summary>
        public class FieldSortedTermVectorMapper:TermVectorMapper
        {
-               private System.Collections.IDictionary fieldToTerms = new 
System.Collections.Hashtable();
-               private System.Collections.Generic.SortedDictionary<object, 
object> currentSet;
+        private IDictionary<string, SortedSet<TermVectorEntry>> fieldToTerms = 
new HashMap<string, SortedSet<TermVectorEntry>>();
+               private SortedSet<TermVectorEntry> currentSet;
                private System.String currentField;
-               private System.Collections.Generic.IComparer<object> comparator;
+        private IComparer<TermVectorEntry> comparator;
                
                /// <summary> </summary>
                /// <param name="comparator">A Comparator for sorting <see 
cref="TermVectorEntry" />s
                /// </param>
-               public 
FieldSortedTermVectorMapper(System.Collections.Generic.IComparer<object> 
comparator):this(false, false, comparator)
+        public FieldSortedTermVectorMapper(IComparer<TermVectorEntry> 
comparator)
+            : this(false, false, comparator)
                {
                }
-               
-               
-               public FieldSortedTermVectorMapper(bool ignoringPositions, bool 
ignoringOffsets, System.Collections.Generic.IComparer<object> 
comparator):base(ignoringPositions, ignoringOffsets)
+
+
+        public FieldSortedTermVectorMapper(bool ignoringPositions, bool 
ignoringOffsets, IComparer<TermVectorEntry> comparator)
+            : base(ignoringPositions, ignoringOffsets)
                {
                        this.comparator = comparator;
                }
@@ -47,12 +51,12 @@ namespace Lucene.Net.Index
                public override void  Map(System.String term, int frequency, 
TermVectorOffsetInfo[] offsets, int[] positions)
                {
                        TermVectorEntry entry = new 
TermVectorEntry(currentField, term, frequency, offsets, positions);
-                       currentSet.Add(entry, entry);
+                       currentSet.Add(entry);
                }
                
                public override void  SetExpectations(System.String field, int 
numTerms, bool storeOffsets, bool storePositions)
                {
-                       currentSet = new 
System.Collections.Generic.SortedDictionary<object, object>(comparator);
+                       currentSet = new 
System.Collections.Generic.SortedSet<TermVectorEntry>(comparator);
                        currentField = field;
                        fieldToTerms[field] = currentSet;
                }
@@ -62,13 +66,13 @@ namespace Lucene.Net.Index
                /// </summary>
         /// <returns> A map between field names and <see 
cref="System.Collections.Generic.SortedDictionary{Object,Object}" />s per 
field.  SortedSet entries are <see cref="TermVectorEntry" />
                /// </returns>
-               public virtual System.Collections.IDictionary GetFieldToTerms()
+               public virtual IDictionary<string, SortedSet<TermVectorEntry>> 
GetFieldToTerms()
                {
                        return fieldToTerms;
                }
-               
-               
-               public virtual System.Collections.Generic.IComparer<object> 
GetComparator()
+
+
+        public virtual IComparer<TermVectorEntry> GetComparator()
                {
                        return comparator;
                }

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommit.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommit.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommit.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/IndexCommit.cs
 Thu Nov 17 06:01:45 2011
@@ -16,7 +16,7 @@
  */
 
 using System;
-
+using System.Collections.Generic;
 using Directory = Lucene.Net.Store.Directory;
 
 namespace Lucene.Net.Index
@@ -40,7 +40,7 @@ namespace Lucene.Net.Index
        /// may suddenly change. <p/>
        /// </summary>
        
-       public abstract class IndexCommit : IndexCommitPoint
+       public abstract class IndexCommit
        {
                
                /// <summary> Get the segments file (<c>segments_N</c>) 
associated 
@@ -49,7 +49,7 @@ namespace Lucene.Net.Index
                public abstract System.String GetSegmentsFileName();
                
                /// <summary> Returns all index files referenced by this commit 
point.</summary>
-               public abstract System.Collections.Generic.ICollection<string> 
GetFileNames();
+               public abstract ICollection<string> GetFileNames();
                
                /// <summary> Returns the <see cref="Directory" /> for the 
index.</summary>
                public abstract Directory GetDirectory();
@@ -114,6 +114,6 @@ namespace Lucene.Net.Index
         /// <see 
cref="IndexWriter.Commit(System.Collections.Generic.IDictionary{string, 
string})" />
                /// for this commit.  IDictionary is String -> String. 
                /// </summary>
-        public abstract System.Collections.Generic.IDictionary<string, string> 
GetUserData();
+        public abstract IDictionary<string, string> GetUserData();
        }
 }
\ No newline at end of file

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=1203064&r1=1203063&r2=1203064&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 06:01:45 2011
@@ -2720,7 +2720,7 @@ namespace Lucene.Net.Index
                                                        int size = 
mergeExceptions.Count;
                                                        for (int i = 0; i < 
size; i++)
                                                        {
-                                                               
MergePolicy.OneMerge merge = mergeExceptions[0];
+                                                               
MergePolicy.OneMerge merge = mergeExceptions[i];
                                                                if 
(merge.optimize)
                                                                {
                                     System.IO.IOException err;

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SortedTermVectorMapper.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SortedTermVectorMapper.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SortedTermVectorMapper.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Index/SortedTermVectorMapper.cs
 Thu Nov 17 06:01:45 2011
@@ -16,6 +16,8 @@
  */
 
 using System;
+using System.Collections.Generic;
+using Lucene.Net.Support;
 
 namespace Lucene.Net.Index
 {
@@ -30,10 +32,8 @@ namespace Lucene.Net.Index
        /// </summary>
        public class SortedTermVectorMapper:TermVectorMapper
        {
-
-
-        private System.Collections.Generic.SortedDictionary<System.Object, 
System.Object> currentSet;
-               private System.Collections.IDictionary termToTVE = new 
System.Collections.Hashtable();
+        private SortedSet<TermVectorEntry> currentSet;
+               private IDictionary<string, TermVectorEntry> termToTVE = new 
HashMap<string, TermVectorEntry>();
                private bool storeOffsets;
                private bool storePositions;
                /// <summary> Stand-in name for the field in <see 
cref="TermVectorEntry" />.</summary>
@@ -42,14 +42,16 @@ namespace Lucene.Net.Index
                /// <summary> </summary>
                /// <param name="comparator">A Comparator for sorting <see 
cref="TermVectorEntry" />s
                /// </param>
-               public 
SortedTermVectorMapper(System.Collections.Generic.IComparer<System.Object> 
comparator):this(false, false, comparator)
+        public SortedTermVectorMapper(IComparer<TermVectorEntry> comparator)
+            : this(false, false, comparator)
                {
                }
-               
-               
-               public SortedTermVectorMapper(bool ignoringPositions, bool 
ignoringOffsets, System.Collections.Generic.IComparer<System.Object> 
comparator):base(ignoringPositions, ignoringOffsets)
+
+
+        public SortedTermVectorMapper(bool ignoringPositions, bool 
ignoringOffsets, IComparer<TermVectorEntry> comparator)
+            : base(ignoringPositions, ignoringOffsets)
                {
-            currentSet = new 
System.Collections.Generic.SortedDictionary<System.Object, 
System.Object>(comparator);
+            currentSet = new SortedSet<TermVectorEntry>(comparator);
                }
                
                /// <summary> </summary>
@@ -64,12 +66,12 @@ namespace Lucene.Net.Index
                //We need to combine any previous mentions of the term
                public override void  Map(System.String term, int frequency, 
TermVectorOffsetInfo[] offsets, int[] positions)
                {
-                       TermVectorEntry entry = (TermVectorEntry) 
termToTVE[term];
+                       TermVectorEntry entry = termToTVE[term];
                        if (entry == null)
                        {
                                entry = new TermVectorEntry(ALL, term, 
frequency, storeOffsets == true?offsets:null, storePositions == 
true?positions:null);
                                termToTVE[term] = entry;
-                               currentSet.Add(entry, entry);
+                               currentSet.Add(entry);
                        }
                        else
                        {
@@ -124,7 +126,7 @@ namespace Lucene.Net.Index
                /// </summary>
                /// <returns> The SortedSet of <see cref="TermVectorEntry" />.
                /// </returns>
-        public virtual System.Collections.Generic.SortedDictionary<Object, 
Object> GetTermVectorEntrySet()
+        public virtual SortedSet<TermVectorEntry> GetTermVectorEntrySet()
                {
                        return currentSet;
                }

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Lucene.Net.csproj
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Lucene.Net.csproj?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Lucene.Net.csproj 
(original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Lucene.Net.csproj 
Thu Nov 17 06:01:45 2011
@@ -329,7 +329,6 @@
     <Compile Include="Index\FreqProxTermsWriterPerField.cs" />
     <Compile Include="Index\FreqProxTermsWriterPerThread.cs" />
     <Compile Include="Index\IndexCommit.cs" />
-    <Compile Include="Index\IndexCommitPoint.cs" />
     <Compile Include="Index\IndexDeletionPolicy.cs" />
     <Compile Include="Index\IndexFileDeleter.cs">
       <SubType>Code</SubType>

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/MultiSearcher.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/MultiSearcher.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/MultiSearcher.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/MultiSearcher.cs
 Thu Nov 17 06:01:45 2011
@@ -438,7 +438,7 @@ namespace Lucene.Net.Search
                                                        ScoreDoc[] scoreDocs = 
docs.scoreDocs;
                                                     for (int j = 0; j < 
scoreDocs.Length; j++) // merge scoreDocs into hq
                                                     {
-                                                        FieldDoc fieldDoc = 
(FieldDoc) scoreDocs[i];
+                                                        FieldDoc fieldDoc = 
(FieldDoc) scoreDocs[j];
                                                         fieldDoc.doc += 
starts[i]; //convert doc
                                                         //it would be so nice 
if we had a thread-safe insert
                                                         lock (theLock)

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/ParallelMultiSearcher.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/ParallelMultiSearcher.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/ParallelMultiSearcher.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/src/core/Search/ParallelMultiSearcher.cs
 Thu Nov 17 06:01:45 2011
@@ -114,9 +114,10 @@ namespace Lucene.Net.Search
             //search each searchable
             for (int i = 0; i < searchables.Length; i++)
             {
+                int cur = i;
                 tasks[i] =
-                    Task.Factory.StartNew(() => 
MultiSearcherCallableNoSort(lockObj, searchables[i], weight, filter,
-                                                                            
nDocs, hq, i, starts));
+                    Task.Factory.StartNew(() => 
MultiSearcherCallableNoSort(lockObj, searchables[cur], weight, filter,
+                                                                            
nDocs, hq, cur, starts));
             }
 
                    int totalHits = 0;
@@ -148,10 +149,10 @@ namespace Lucene.Net.Search
             Task<TopFieldDocs>[] tasks = new 
Task<TopFieldDocs>[searchables.Length];
             for (int i = 0; i < searchables.Length; i++) // search each 
searchable
             {
+                int cur = i;
                 tasks[i] =
                     Task.Factory.StartNew(
-                        () =>
-                        MultiSearcherCallableWithSort(lockObj, searchables[i], 
weight, filter, nDocs, hq, sort, i,
+                        () => MultiSearcherCallableWithSort(lockObj, 
searchables[cur], weight, filter, nDocs, hq, sort, cur,
                                                       starts));
             }
 

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestBackwardsCompatibility.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestBackwardsCompatibility.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestBackwardsCompatibility.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestBackwardsCompatibility.cs
 Thu Nov 17 06:01:45 2011
@@ -190,10 +190,9 @@ namespace Lucene.Net.Index
                         if (d.Get("content3") != null) continue;
                         count++;
                         // read the size from the binary value using 
BinaryReader (this prevents us from doing the shift ops ourselves):
-                        BinaryReader ds =
-                            new BinaryReader(new 
MemoryStream(d.GetFieldable("compressed").GetBinaryValue()));
-                        int actualSize = ds.ReadInt32();
-                        ds.Close();
+                        // ugh, Java uses Big-Endian streams, so we need to do 
it manually.
+                        byte[] encodedSize = 
d.GetFieldable("compressed").GetBinaryValue().Take(4).Reverse().ToArray();
+                        int actualSize = BitConverter.ToInt32(encodedSize, 0);
                         int compressedSize = 
int.Parse(d.Get("compressedSize"));
                         bool binary = int.Parse(d.Get("id"))%2 > 0;
                         int shouldSize = shouldStillBeCompressed
@@ -318,11 +317,10 @@ namespace Lucene.Net.Index
                                        var fields = d.GetFields();
                                        if (!oldName.StartsWith("19.") && 
!oldName.StartsWith("20.") && !oldName.StartsWith("21.") && 
!oldName.StartsWith("22."))
                                        {
-                                               
                                                if (d.GetField("content3") == 
null)
                                                {
                                                    int numFields = 
oldName.StartsWith("29.") ? 7 : 5;
-                                                       Assert.AreEqual(5, 
fields.Count);
+                                                       
Assert.AreEqual(numFields, fields.Count);
                                                        Field f = 
d.GetField("id");
                                                        Assert.AreEqual("" + i, 
f.StringValue());
                                                        

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexReader.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexReader.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexReader.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestIndexReader.cs
 Thu Nov 17 06:01:45 2011
@@ -262,13 +262,13 @@ namespace Lucene.Net.Index
                        IndexReader reader = IndexReader.Open(d, false);
                        FieldSortedTermVectorMapper mapper = new 
FieldSortedTermVectorMapper(new TermVectorEntryFreqSortedComparator());
                        reader.GetTermFreqVector(0, mapper);
-                       System.Collections.IDictionary map = 
mapper.GetFieldToTerms();
+                       var map = mapper.GetFieldToTerms();
                        Assert.IsTrue(map != null, "map is null and it 
shouldn't be");
                        Assert.IsTrue(map.Count == 4, "map Size: " + map.Count 
+ " is not: " + 4);
-            System.Collections.Generic.SortedDictionary<object, object> 
set_Renamed = (System.Collections.Generic.SortedDictionary<object, 
object>)map["termvector"];
-            foreach (System.Collections.Generic.KeyValuePair<object, object> 
item in set_Renamed)
+            var set_Renamed = map["termvector"];
+            foreach (var item in set_Renamed)
                        {
-                TermVectorEntry entry =  (TermVectorEntry)item.Key;
+                TermVectorEntry entry =  (TermVectorEntry)item;
                                Assert.IsTrue(entry != null, "entry is null and 
it shouldn't be");
                                System.Console.Out.WriteLine("Entry: " + entry);
                        }

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestTermVectorsReader.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestTermVectorsReader.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestTermVectorsReader.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Index/TestTermVectorsReader.cs
 Thu Nov 17 06:01:45 2011
@@ -350,12 +350,12 @@ namespace Lucene.Net.Index
                        Assert.IsTrue(reader != null);
                        SortedTermVectorMapper mapper = new 
SortedTermVectorMapper(new TermVectorEntryFreqSortedComparator());
                        reader.Get(0, mapper);
-                       
System.Collections.Generic.SortedDictionary<Object,Object> set_Renamed = 
mapper.GetTermVectorEntrySet();
+                       var set_Renamed = mapper.GetTermVectorEntrySet();
                        Assert.IsTrue(set_Renamed != null, "set is null and it 
shouldn't be");
                        //three fields, 4 terms, all terms are the same
                        Assert.IsTrue(set_Renamed.Count == 4, "set Size: " + 
set_Renamed.Count + " is not: " + 4);
                        //Check offsets and positions
-                       for (System.Collections.IEnumerator iterator = 
set_Renamed.Keys.GetEnumerator(); iterator.MoveNext(); )
+                       for (System.Collections.IEnumerator iterator = 
set_Renamed.GetEnumerator(); iterator.MoveNext(); )
                        {
                                TermVectorEntry tve = (TermVectorEntry) 
iterator.Current;
                                Assert.IsTrue(tve != null, "tve is null and it 
shouldn't be");
@@ -370,7 +370,7 @@ namespace Lucene.Net.Index
                        //three fields, 4 terms, all terms are the same
                        Assert.IsTrue(set_Renamed.Count == 4, "set Size: " + 
set_Renamed.Count + " is not: " + 4);
                        //Should have offsets and positions b/c we are munging 
all the fields together
-                       for (System.Collections.IEnumerator iterator = 
set_Renamed.Keys.GetEnumerator(); iterator.MoveNext(); )
+                       for (System.Collections.IEnumerator iterator = 
set_Renamed.GetEnumerator(); iterator.MoveNext(); )
                        {
                                TermVectorEntry tve = (TermVectorEntry) 
iterator.Current;
                                Assert.IsTrue(tve != null, "tve is null and it 
shouldn't be");
@@ -381,16 +381,16 @@ namespace Lucene.Net.Index
                        
                        FieldSortedTermVectorMapper fsMapper = new 
FieldSortedTermVectorMapper(new TermVectorEntryFreqSortedComparator());
                        reader.Get(0, fsMapper);
-                       System.Collections.IDictionary map = 
fsMapper.GetFieldToTerms();
+                       var map = fsMapper.GetFieldToTerms();
                        Assert.IsTrue(map.Count == testFields.Length, "map 
Size: " + map.Count + " is not: " + testFields.Length);
-                       for (System.Collections.IEnumerator iterator = new 
System.Collections.Hashtable(map).GetEnumerator(); iterator.MoveNext(); )
+                       for (var iterator = map.GetEnumerator(); 
iterator.MoveNext(); )
                        {
-                               System.Collections.DictionaryEntry entry = 
(System.Collections.DictionaryEntry) iterator.Current;
-                               
System.Collections.Generic.SortedDictionary<Object,Object> sortedSet = 
(System.Collections.Generic.SortedDictionary<Object,Object>)entry.Value;
+                               var entry = iterator.Current;
+                               var sortedSet = entry.Value;
                                Assert.IsTrue(sortedSet.Count == 4, "sortedSet 
Size: " + sortedSet.Count + " is not: " + 4);
-                               for (System.Collections.IEnumerator inner = 
sortedSet.Keys.GetEnumerator(); inner.MoveNext(); )
+                               for (var inner = sortedSet.GetEnumerator(); 
inner.MoveNext(); )
                                {
-                                       TermVectorEntry tve = (TermVectorEntry) 
inner.Current;
+                                       TermVectorEntry tve = inner.Current;
                                        Assert.IsTrue(tve != null, "tve is null 
and it shouldn't be");
                                        //Check offsets and positions.
                                        Assert.IsTrue(tve != null, "tve is null 
and it shouldn't be");
@@ -416,14 +416,14 @@ namespace Lucene.Net.Index
                        reader.Get(0, fsMapper);
                        map = fsMapper.GetFieldToTerms();
                        Assert.IsTrue(map.Count == testFields.Length, "map 
Size: " + map.Count + " is not: " + testFields.Length);
-                       for (System.Collections.IEnumerator iterator = new 
System.Collections.Hashtable(map).GetEnumerator(); iterator.MoveNext(); )
+                       for (var iterator = map.GetEnumerator(); 
iterator.MoveNext(); )
                        {
-                               System.Collections.DictionaryEntry entry = 
(System.Collections.DictionaryEntry) iterator.Current;
-                               
System.Collections.Generic.SortedDictionary<Object,Object> sortedSet = 
(System.Collections.Generic.SortedDictionary<Object,Object>)entry.Value;
+                               var entry = iterator.Current;
+                               var sortedSet = entry.Value;
                                Assert.IsTrue(sortedSet.Count == 4, "sortedSet 
Size: " + sortedSet.Count + " is not: " + 4);
-                               for (System.Collections.IEnumerator inner = 
sortedSet.Keys.GetEnumerator(); inner.MoveNext(); )
+                               for (var inner = sortedSet.GetEnumerator(); 
inner.MoveNext(); )
                                {
-                                       TermVectorEntry tve = (TermVectorEntry) 
inner.Current;
+                                       TermVectorEntry tve = inner.Current;
                                        Assert.IsTrue(tve != null, "tve is null 
and it shouldn't be");
                                        //Check offsets and positions.
                                        Assert.IsTrue(tve != null, "tve is null 
and it shouldn't be");

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestBoolean2.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestBoolean2.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestBoolean2.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestBoolean2.cs
 Thu Nov 17 06:01:45 2011
@@ -256,7 +256,7 @@ namespace Lucene.Net.Search
                                for (int i = 0; i < 1000; i++)
                                {
                                        int level = rnd.Next(3);
-                                       q1 = RandBoolQuery(new 
System.Random(rnd.Next(System.Int32.MaxValue)), rnd.Next(0, 1) == 0 ? false : 
true, level, field, vals, null);
+                                       q1 = RandBoolQuery(new 
System.Random(rnd.Next(System.Int32.MaxValue)), rnd.Next(0, 2) == 0 ? false : 
true, level, field, vals, null);
                                        
                                        // Can't sort by relevance since 
floating point numbers may not quite
                                        // match up.
@@ -276,7 +276,7 @@ namespace Lucene.Net.Search
 
                     BooleanQuery q3 = new BooleanQuery();
                                    q3.Add(q1, BooleanClause.Occur.SHOULD);
-                    q3.Add(new PrefixQuery(new Term("Field", "b")), 
BooleanClause.Occur.SHOULD);
+                    q3.Add(new PrefixQuery(new Term("field2", "b")), 
BooleanClause.Occur.SHOULD);
                                    TopDocs hits4 = bigSearcher.Search(q3, 1);
                                    
Assert.AreEqual(mulFactor*collector.totalHits + NUM_EXTRA_DOCS/2, 
hits4.TotalHits);
                                }

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermScorer.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermScorer.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermScorer.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermScorer.cs
 Thu Nov 17 06:01:45 2011
@@ -102,7 +102,7 @@ namespace Lucene.Net.Search
                                writer.AddDocument(doc);
                        }
                        writer.Close();
-                       indexSearcher = new IndexSearcher(directory);
+                   indexSearcher = new IndexSearcher(directory, false);
                        indexReader = indexSearcher.GetIndexReader();
                }
                
@@ -179,46 +179,6 @@ namespace Lucene.Net.Search
                        Assert.IsTrue(ts.DocID() == 5, "doc should be number 
5");
                }
                
-               [Test]
-               public virtual void  TestExplain()
-               {
-                       Term allTerm = new Term(FIELD, "all");
-                       TermQuery termQuery = new TermQuery(allTerm);
-                       
-                       Weight weight = termQuery.Weight(indexSearcher);
-                       
-                       TermScorer ts = new TermScorer(weight, 
indexReader.TermDocs(allTerm), indexSearcher.GetSimilarity(), 
indexReader.Norms(FIELD));
-                       Explanation explanation = ts.Explain(0);
-                       Assert.IsTrue(explanation != null, "explanation is null 
and it shouldn't be");
-                       //System.out.println("Explanation: " + 
explanation.toString());
-                       //All this Explain does is return the term frequency
-                       Assert.IsTrue(explanation.GetValue() == 1, "term frq is 
not 1");
-                       explanation = ts.Explain(1);
-                       Assert.IsTrue(explanation != null, "explanation is null 
and it shouldn't be");
-                       //System.out.println("Explanation: " + 
explanation.toString());
-                       //All this Explain does is return the term frequency
-                       Assert.IsTrue(explanation.GetValue() == 0, "term frq is 
not 0");
-                       
-                       Term dogsTerm = new Term(FIELD, "dogs");
-                       termQuery = new TermQuery(dogsTerm);
-                       weight = termQuery.Weight(indexSearcher);
-                       
-                       ts = new TermScorer(weight, 
indexReader.TermDocs(dogsTerm), indexSearcher.GetSimilarity(), 
indexReader.Norms(FIELD));
-                       explanation = ts.Explain(1);
-                       Assert.IsTrue(explanation != null, "explanation is null 
and it shouldn't be");
-                       //System.out.println("Explanation: " + 
explanation.toString());
-                       //All this Explain does is return the term frequency
-                       float sqrtTwo = (float) System.Math.Sqrt(2.0f);
-                       Assert.IsTrue(explanation.GetValue() == sqrtTwo, "term 
frq: " + explanation.GetValue() + " is not the square root of 2");
-                       
-                       explanation = ts.Explain(10); //try a doc out of range
-                       Assert.IsTrue(explanation != null, "explanation is null 
and it shouldn't be");
-                       //System.out.println("Explanation: " + 
explanation.toString());
-                       //All this Explain does is return the term frequency
-                       
-                       Assert.IsTrue(explanation.GetValue() == 0, "term frq: " 
+ explanation.GetValue() + " is not 0");
-               }
-               
                private class TestHit
                {
                        private void  InitBlock(TestTermScorer 
enclosingInstance)

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermVectors.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermVectors.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermVectors.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestTermVectors.cs
 Thu Nov 17 06:01:45 2011
@@ -347,10 +347,10 @@ namespace Lucene.Net.Search
                                }
                                SortedTermVectorMapper mapper = new 
SortedTermVectorMapper(new TermVectorEntryFreqSortedComparator());
                                
knownSearcher.reader_ForNUnit.GetTermFreqVector(hits[1].doc, mapper);
-                               
System.Collections.Generic.SortedDictionary<object, object> vectorEntrySet = 
mapper.GetTermVectorEntrySet();
+                               var vectorEntrySet = 
mapper.GetTermVectorEntrySet();
                                Assert.IsTrue(vectorEntrySet.Count == 10, 
"mapper.getTermVectorEntrySet() Size: " + vectorEntrySet.Count + " is not: " + 
10);
                                TermVectorEntry last = null;
-                foreach(TermVectorEntry tve in vectorEntrySet.Keys)
+                foreach(TermVectorEntry tve in vectorEntrySet)
                                {
                                        if (tve != null && last != null)
                                        {
@@ -364,9 +364,9 @@ namespace Lucene.Net.Search
                                
                                FieldSortedTermVectorMapper fieldMapper = new 
FieldSortedTermVectorMapper(new TermVectorEntryFreqSortedComparator());
                                
knownSearcher.reader_ForNUnit.GetTermFreqVector(hits[1].doc, fieldMapper);
-                               System.Collections.IDictionary map = 
fieldMapper.GetFieldToTerms();
+                               var map = fieldMapper.GetFieldToTerms();
                                Assert.IsTrue(map.Count == 2, "map Size: " + 
map.Count + " is not: " + 2);
-                               vectorEntrySet = 
(System.Collections.Generic.SortedDictionary<Object,Object>) map["field"];
+                               vectorEntrySet = map["field"];
                                Assert.IsTrue(vectorEntrySet != null, 
"vectorEntrySet is null and it shouldn't be");
                                Assert.IsTrue(vectorEntrySet.Count == 10, 
"vectorEntrySet Size: " + vectorEntrySet.Count + " is not: " + 10);
                                knownSearcher.Close();

Modified: 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestWildcard.cs
URL: 
http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestWildcard.cs?rev=1203064&r1=1203063&r2=1203064&view=diff
==============================================================================
--- 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestWildcard.cs
 (original)
+++ 
incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk/test/core/Search/TestWildcard.cs
 Thu Nov 17 06:01:45 2011
@@ -34,12 +34,7 @@ using LuceneTestCase = Lucene.Net.Util.L
 namespace Lucene.Net.Search
 {
        
-       /// <summary> TestWildcard tests the '*' and '?' wildcard characters.
-       /// 
-       /// </summary>
-       /// <version>  $Id: TestWildcard.java 694004 2008-09-10 21:38:52Z 
mikemccand $
-       /// 
-       /// </version>
+       /// <summary>TestWildcard tests the '*' and '?' wildcard 
characters.</summary>
     [TestFixture]
        public class TestWildcard:LuceneTestCase
        {
@@ -66,27 +61,105 @@ namespace Lucene.Net.Search
                }
                
                /// <summary> Tests if a WildcardQuery that has no wildcard in 
the term is rewritten to a single
-               /// TermQuery.
+               /// TermQuery.  The boost should be prserved, and the rewrite 
should return
+               /// a ConstantScoreQuery if the WildcardQuery had a 
ConstantScore rewriteMethod.
                /// </summary>
-               [Test]
-               public virtual void  TestTermWithoutWildcard()
+        [Test]
+        public virtual void TestTermWithoutWildcard()
                {
-                       RAMDirectory indexStore = GetIndexStore("field", new 
System.String[]{"nowildcard", "nowildcardx"});
-                       IndexSearcher searcher = new IndexSearcher(indexStore);
-                       
-                       Query wq = new WildcardQuery(new Term("field", 
"nowildcard"));
-                       AssertMatches(searcher, wq, 1);
-                       
-                       wq = searcher.Rewrite(wq);
-                       Assert.IsTrue(wq is TermQuery);
+                   RAMDirectory indexStore = GetIndexStore("field", new 
System.String[] {"nowildcard", "nowildcardx"});
+                   IndexSearcher searcher = new IndexSearcher(indexStore, 
true);
+
+                   MultiTermQuery wq = new WildcardQuery(new Term("field", 
"nowildcard"));
+                   AssertMatches(searcher, wq, 1);
+
+                   
wq.SetRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
+                   wq.SetBoost(0.1f);
+                   Query q = searcher.Rewrite(wq);
+                   Assert.IsTrue(q is TermQuery);
+                   Assert.AreEqual(q.GetBoost(), wq.GetBoost());
+
+                   
wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE);
+                   wq.SetBoost(0.2f);
+                   q = searcher.Rewrite(wq);
+                   Assert.True(q is ConstantScoreQuery);
+                   Assert.AreEqual(q.GetBoost(), wq.GetBoost());
+
+                   
wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT);
+                   wq.SetBoost(0.3F);
+                   q = searcher.Rewrite(wq);
+                   Assert.True(q is ConstantScoreQuery);
+                   Assert.AreEqual(q.GetBoost(), wq.GetBoost());
+
+                   
wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE);
+                   wq.SetBoost(0.4F);
+                   q = searcher.Rewrite(wq);
+                   Assert.True(q is ConstantScoreQuery);
+                   Assert.AreEqual(q.GetBoost(), wq.GetBoost());
                }
-               
-               /// <summary> Tests Wildcard queries with an asterisk.</summary>
+
+        /// <summary>
+        /// Tests if a WildcardQuery with an empty term is rewritten to an 
empty BooleanQuery
+        /// </summary>
+        [Test]
+        public void TestEmptyTerm()
+        {
+            RAMDirectory indexStore = GetIndexStore("field", new String[] { 
"nowildcard", "nowildcardx" });
+            IndexSearcher searcher = new IndexSearcher(indexStore, true);
+
+            MultiTermQuery wq = new WildcardQuery(new Term("field", ""));
+            wq.SetRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
+            AssertMatches(searcher, wq, 0);
+            BooleanQuery expected = new BooleanQuery(true);
+            Assert.AreEqual(searcher.Rewrite(expected), searcher.Rewrite(wq));
+        }
+
+        /// <summary>
+        /// Tests if a WildcardQuery that has only a trailing * in the term is
+        /// rewritten to a single PrefixQuery.  The boost and rewriteMethod 
should be
+        /// preserved.
+        /// </summary>
+        [Test]
+        public void TestPrefixTerm()
+        {
+            RAMDirectory indexStore = GetIndexStore("field", new String[] { 
"prefix", "prefixx" });
+            IndexSearcher searcher = new IndexSearcher(indexStore, true);
+
+            MultiTermQuery wq = new WildcardQuery(new Term("field", 
"prefix*"));
+            AssertMatches(searcher, wq, 2);
+
+            MultiTermQuery expected = new PrefixQuery(new Term("field", 
"prefix"));
+            wq.SetRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
+            wq.SetBoost(0.1F);
+            expected.SetRewriteMethod(wq.GetRewriteMethod());
+            expected.SetBoost(wq.GetBoost());
+            Assert.AreEqual(searcher.Rewrite(expected), searcher.Rewrite(wq));
+
+            wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE);
+            wq.SetBoost(0.2F);
+            expected.SetRewriteMethod(wq.GetRewriteMethod());
+            expected.SetBoost(wq.GetBoost());
+            Assert.AreEqual(searcher.Rewrite(expected), searcher.Rewrite(wq));
+
+            
wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT);
+            wq.SetBoost(0.3F);
+            expected.SetRewriteMethod(wq.GetRewriteMethod());
+            expected.SetBoost(wq.GetBoost());
+            Assert.AreEqual(searcher.Rewrite(expected), searcher.Rewrite(wq));
+
+            
wq.SetRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE);
+            wq.SetBoost(0.4F);
+            expected.SetRewriteMethod(wq.GetRewriteMethod());
+            expected.SetBoost(wq.GetBoost());
+            Assert.AreEqual(searcher.Rewrite(expected), searcher.Rewrite(wq));
+        }
+
+           /// <summary> Tests Wildcard queries with an asterisk.</summary>
                [Test]
                public virtual void  TestAsterisk()
                {
                        RAMDirectory indexStore = GetIndexStore("body", new 
System.String[]{"metal", "metals"});
-                       IndexSearcher searcher = new IndexSearcher(indexStore);
+               IndexSearcher searcher = new IndexSearcher(indexStore, true);
                        Query query1 = new TermQuery(new Term("body", "metal"));
                        Query query2 = new WildcardQuery(new Term("body", 
"metal*"));
                        Query query3 = new WildcardQuery(new Term("body", 
"m*tal"));
@@ -145,7 +218,7 @@ namespace Lucene.Net.Search
                public virtual void  TestQuestionmark()
                {
                        RAMDirectory indexStore = GetIndexStore("body", new 
System.String[]{"metal", "metals", "mXtals", "mXtXls"});
-                       IndexSearcher searcher = new IndexSearcher(indexStore);
+                   IndexSearcher searcher = new IndexSearcher(indexStore, 
true);
                        Query query1 = new WildcardQuery(new Term("body", 
"m?tal"));
                        Query query2 = new WildcardQuery(new Term("body", 
"metal?"));
                        Query query3 = new WildcardQuery(new Term("body", 
"metals?"));
@@ -216,8 +289,8 @@ namespace Lucene.Net.Search
                                iw.AddDocument(doc);
                        }
                        iw.Close();
-                       
-                       IndexSearcher searcher = new IndexSearcher(dir);
+
+                   IndexSearcher searcher = new IndexSearcher(dir, true);
                        
                        // test queries that must find all
                        for (int i = 0; i < matchAll.Length; i++)

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=1203064&r1=1203063&r2=1203064&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 06:01:45 2011
@@ -205,14 +205,14 @@ search\TestSpanQueryFilter.java - Text f
 search\TestStressSort.java - REMOVED
 search\TestTermRangeFilter.java - DONE
 search\TestTermRangeQuery.java - DONE
-search\TestTermScorer.java - Text files are different
+search\TestTermScorer.java - DONE
 search\TestTermVectors.java - DONE
 search\TestThreadSafe.java - DONE
 search\TestTimeLimitedCollector.java - REMOVED
 search\TestTimeLimitingCollector.java - DONE
 search\TestTopDocsCollector.java - Text files are different
 search\TestTopScoreDocCollector.java - DONE
-search\TestWildcard.java - Text files are different
+search\TestWildcard.java - DONE
 
 
 Store\


Reply via email to