You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by cc...@apache.org on 2011/11/17 07:01:45 UTC
[Lucene.Net] svn commit: r1203064 - in
/incubator/lucene.net/branches/Lucene.Net.3.0.3/trunk: src/core/
src/core/Index/ src/core/Search/ test/core/ test/core/Index/
test/core/Search/
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\