You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/02/26 23:37:44 UTC
[56/72] [abbrv] lucenenet git commit: Lucene.Net.TestFramework:
Renamed Codecs\lucene3x\ to Codecs\Lucene3x\
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/Lucene3x/TermInfosWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/Lucene3x/TermInfosWriter.cs b/src/Lucene.Net.TestFramework/Codecs/Lucene3x/TermInfosWriter.cs
new file mode 100644
index 0000000..fd7c05d
--- /dev/null
+++ b/src/Lucene.Net.TestFramework/Codecs/Lucene3x/TermInfosWriter.cs
@@ -0,0 +1,334 @@
+using System.Diagnostics;
+
+namespace Lucene.Net.Codecs.Lucene3x
+{
+ using System;
+ using System.IO;
+ using BytesRef = Lucene.Net.Util.BytesRef;
+ using CharsRef = Lucene.Net.Util.CharsRef;
+ using Directory = Lucene.Net.Store.Directory;
+
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ using FieldInfos = Lucene.Net.Index.FieldInfos;
+ using IndexFileNames = Lucene.Net.Index.IndexFileNames;
+ using IndexOutput = Lucene.Net.Store.IndexOutput;
+ using IOContext = Lucene.Net.Store.IOContext;
+ using IOUtils = Lucene.Net.Util.IOUtils;
+ using UnicodeUtil = Lucene.Net.Util.UnicodeUtil;
+
+ /// <summary>
+ /// this stores a monotonically increasing set of <Term, TermInfo> pairs in a
+ /// Directory. A TermInfos can be written once, in order.
+ /// </summary>
+#pragma warning disable 612, 618
+ internal sealed class TermInfosWriter : IDisposable
+ {
+ /// <summary>
+ /// The file format version, a negative number. </summary>
+ public const int FORMAT = -3;
+
+ // Changed strings to true utf8 with length-in-bytes not
+ // length-in-chars
+ public const int FORMAT_VERSION_UTF8_LENGTH_IN_BYTES = -4;
+
+ // NOTE: always change this if you switch to a new format!
+ public const int FORMAT_CURRENT = FORMAT_VERSION_UTF8_LENGTH_IN_BYTES;
+
+ private FieldInfos FieldInfos;
+ private IndexOutput Output;
+ private TermInfo LastTi = new TermInfo();
+ private long Size;
+
+ // TODO: the default values for these two parameters should be settable from
+ // IndexWriter. However, once that's done, folks will start setting them to
+ // ridiculous values and complaining that things don't work well, as with
+ // mergeFactor. So, let's wait until a number of folks find that alternate
+ // values work better. Note that both of these values are stored in the
+ // segment, so that it's safe to change these w/o rebuilding all indexes.
+
+ /// <summary>
+ /// Expert: The fraction of terms in the "dictionary" which should be stored
+ /// in RAM. Smaller values use more memory, but make searching slightly
+ /// faster, while larger values use less memory and make searching slightly
+ /// slower. Searching is typically not dominated by dictionary lookup, so
+ /// tweaking this is rarely useful.
+ /// </summary>
+ internal int IndexInterval = 128;
+
+ /// <summary>
+ /// Expert: The fraction of term entries stored in skip tables,
+ /// used to accelerate skipping. Larger values result in
+ /// smaller indexes, greater acceleration, but fewer accelerable cases, while
+ /// smaller values result in bigger indexes, less acceleration and more
+ /// accelerable cases. More detailed experiments would be useful here.
+ /// </summary>
+ internal int SkipInterval = 16;
+
+ /// <summary>
+ /// Expert: The maximum number of skip levels. Smaller values result in
+ /// slightly smaller indexes, but slower skipping in big posting lists.
+ /// </summary>
+ internal int MaxSkipLevels = 10;
+
+ private long LastIndexPointer;
+ private bool IsIndex;
+ private readonly BytesRef LastTerm = new BytesRef();
+ private int LastFieldNumber = -1;
+
+ private TermInfosWriter Other;
+
+ internal TermInfosWriter(Directory directory, string segment, FieldInfos fis, int interval)
+ {
+ Initialize(directory, segment, fis, interval, false);
+ bool success = false;
+ try
+ {
+ Other = new TermInfosWriter(directory, segment, fis, interval, true);
+ Other.Other = this;
+ success = true;
+ }
+ finally
+ {
+ if (!success)
+ {
+ IOUtils.CloseWhileHandlingException(Output);
+
+ try
+ {
+ directory.DeleteFile(IndexFileNames.SegmentFileName(segment, "", (IsIndex ? Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION : Lucene3xPostingsFormat.TERMS_EXTENSION)));
+ }
+#pragma warning disable 168
+ catch (IOException ignored)
+#pragma warning restore 168
+ {
+ }
+ }
+ }
+ }
+
+ private TermInfosWriter(Directory directory, string segment, FieldInfos fis, int interval, bool isIndex)
+ {
+ Initialize(directory, segment, fis, interval, isIndex);
+ }
+
+ private void Initialize(Directory directory, string segment, FieldInfos fis, int interval, bool isi)
+ {
+ IndexInterval = interval;
+ FieldInfos = fis;
+ IsIndex = isi;
+ Output = directory.CreateOutput(IndexFileNames.SegmentFileName(segment, "", (IsIndex ? Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION : Lucene3xPostingsFormat.TERMS_EXTENSION)), IOContext.DEFAULT);
+ bool success = false;
+ try
+ {
+ Output.WriteInt32(FORMAT_CURRENT); // write format
+ Output.WriteInt64(0); // leave space for size
+ Output.WriteInt32(IndexInterval); // write indexInterval
+ Output.WriteInt32(SkipInterval); // write skipInterval
+ Output.WriteInt32(MaxSkipLevels); // write maxSkipLevels
+ Debug.Assert(InitUTF16Results());
+ success = true;
+ }
+ finally
+ {
+ if (!success)
+ {
+ IOUtils.CloseWhileHandlingException(Output);
+
+ try
+ {
+ directory.DeleteFile(IndexFileNames.SegmentFileName(segment, "", (IsIndex ? Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION : Lucene3xPostingsFormat.TERMS_EXTENSION)));
+ }
+#pragma warning disable 168
+ catch (IOException ignored)
+#pragma warning restore 168
+ {
+ }
+ }
+ }
+ }
+
+ // Currently used only by assert statements
+ internal CharsRef Utf16Result1;
+
+ internal CharsRef Utf16Result2;
+ private readonly BytesRef ScratchBytes = new BytesRef();
+
+ // Currently used only by assert statements
+ private bool InitUTF16Results()
+ {
+ Utf16Result1 = new CharsRef(10);
+ Utf16Result2 = new CharsRef(10);
+ return true;
+ }
+
+ /// <summary>
+ /// note: -1 is the empty field: "" !!!! </summary>
+ internal static string FieldName(FieldInfos infos, int fieldNumber)
+ {
+ if (fieldNumber == -1)
+ {
+ return "";
+ }
+ else
+ {
+ return infos.FieldInfo(fieldNumber).Name;
+ }
+ }
+
+ // Currently used only by assert statement
+ private int CompareToLastTerm(int fieldNumber, BytesRef term)
+ {
+ if (LastFieldNumber != fieldNumber)
+ {
+ int cmp = FieldName(FieldInfos, LastFieldNumber).CompareTo(FieldName(FieldInfos, fieldNumber));
+ // If there is a field named "" (empty string) then we
+ // will get 0 on this comparison, yet, it's "OK". But
+ // it's not OK if two different field numbers map to
+ // the same name.
+ if (cmp != 0 || LastFieldNumber != -1)
+ {
+ return cmp;
+ }
+ }
+
+ ScratchBytes.CopyBytes(term);
+ Debug.Assert(LastTerm.Offset == 0);
+ UnicodeUtil.UTF8toUTF16(LastTerm.Bytes, 0, LastTerm.Length, Utf16Result1);
+
+ Debug.Assert(ScratchBytes.Offset == 0);
+ UnicodeUtil.UTF8toUTF16(ScratchBytes.Bytes, 0, ScratchBytes.Length, Utf16Result2);
+
+ int len;
+ if (Utf16Result1.Length < Utf16Result2.Length)
+ {
+ len = Utf16Result1.Length;
+ }
+ else
+ {
+ len = Utf16Result2.Length;
+ }
+
+ for (int i = 0; i < len; i++)
+ {
+ char ch1 = Utf16Result1.Chars[i];
+ char ch2 = Utf16Result2.Chars[i];
+ if (ch1 != ch2)
+ {
+ return ch1 - ch2;
+ }
+ }
+ if (Utf16Result1.Length == 0 && LastFieldNumber == -1)
+ {
+ // If there is a field named "" (empty string) with a term text of "" (empty string) then we
+ // will get 0 on this comparison, yet, it's "OK".
+ return -1;
+ }
+ return Utf16Result1.Length - Utf16Result2.Length;
+ }
+
+ /// <summary>
+ /// Adds a new <<fieldNumber, termBytes>, TermInfo> pair to the set.
+ /// Term must be lexicographically greater than all previous Terms added.
+ /// TermInfo pointers must be positive and greater than all previous.
+ /// </summary>
+ public void Add(int fieldNumber, BytesRef term, TermInfo ti)
+ {
+ Debug.Assert(CompareToLastTerm(fieldNumber, term) < 0 || (IsIndex && term.Length == 0 && LastTerm.Length == 0), "Terms are out of order: field=" + FieldName(FieldInfos, fieldNumber) + " (number " + fieldNumber + ")" + " lastField=" + FieldName(FieldInfos, LastFieldNumber) + " (number " + LastFieldNumber + ")" + " text=" + term.Utf8ToString() + " lastText=" + LastTerm.Utf8ToString());
+
+ Debug.Assert(ti.FreqPointer >= LastTi.FreqPointer, "freqPointer out of order (" + ti.FreqPointer + " < " + LastTi.FreqPointer + ")");
+ Debug.Assert(ti.ProxPointer >= LastTi.ProxPointer, "proxPointer out of order (" + ti.ProxPointer + " < " + LastTi.ProxPointer + ")");
+
+ if (!IsIndex && Size % IndexInterval == 0)
+ {
+ Other.Add(LastFieldNumber, LastTerm, LastTi); // add an index term
+ }
+ WriteTerm(fieldNumber, term); // write term
+
+ Output.WriteVInt32(ti.DocFreq); // write doc freq
+ Output.WriteVInt64(ti.FreqPointer - LastTi.FreqPointer); // write pointers
+ Output.WriteVInt64(ti.ProxPointer - LastTi.ProxPointer);
+
+ if (ti.DocFreq >= SkipInterval)
+ {
+ Output.WriteVInt32(ti.SkipOffset);
+ }
+
+ if (IsIndex)
+ {
+ Output.WriteVInt64(Other.Output.FilePointer - LastIndexPointer);
+ LastIndexPointer = Other.Output.FilePointer; // write pointer
+ }
+
+ LastFieldNumber = fieldNumber;
+ LastTi.Set(ti);
+ Size++;
+ }
+
+ private void WriteTerm(int fieldNumber, BytesRef term)
+ {
+ //System.out.println(" tiw.write field=" + fieldNumber + " term=" + term.utf8ToString());
+
+ // TODO: UTF16toUTF8 could tell us this prefix
+ // Compute prefix in common with last term:
+ int start = 0;
+ int limit = term.Length < LastTerm.Length ? term.Length : LastTerm.Length;
+ while (start < limit)
+ {
+ if (term.Bytes[start + term.Offset] != LastTerm.Bytes[start + LastTerm.Offset])
+ {
+ break;
+ }
+ start++;
+ }
+
+ int length = term.Length - start;
+ Output.WriteVInt32(start); // write shared prefix length
+ Output.WriteVInt32(length); // write delta length
+ Output.WriteBytes(term.Bytes, start + term.Offset, length); // write delta bytes
+ Output.WriteVInt32(fieldNumber); // write field num
+ LastTerm.CopyBytes(term);
+ }
+
+ /// <summary>
+ /// Called to complete TermInfos creation. </summary>
+ public void Dispose()
+ {
+ try
+ {
+ Output.Seek(4); // write size after format
+ Output.WriteInt64(Size);
+ }
+ finally
+ {
+ try
+ {
+ Output.Dispose();
+ }
+ finally
+ {
+ if (!IsIndex)
+ {
+ Other.Dispose();
+ }
+ }
+ }
+ }
+ }
+#pragma warning restore 612, 618
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWCodec.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWCodec.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWCodec.cs
deleted file mode 100644
index 4d265d9..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWCodec.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using LuceneTestCase = Lucene.Net.Util.LuceneTestCase;
-
- /// <summary>
- /// Writes 3.x-like indexes (not perfect emulation yet) for testing only!
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- public class PreFlexRWCodec : Lucene3xCodec
- {
- private readonly PostingsFormat Postings = new PreFlexRWPostingsFormat();
- private readonly Lucene3xNormsFormat Norms = new PreFlexRWNormsFormat();
- private readonly FieldInfosFormat FieldInfos = new PreFlexRWFieldInfosFormat();
- private readonly TermVectorsFormat TermVectors = new PreFlexRWTermVectorsFormat();
- private readonly SegmentInfoFormat SegmentInfos = new PreFlexRWSegmentInfoFormat();
- private readonly StoredFieldsFormat StoredFields = new PreFlexRWStoredFieldsFormat();
- private readonly bool _oldFormatImpersonationIsActive;
-
- /// <summary>
- /// LUCENENET specific
- /// Creates the codec with OldFormatImpersonationIsActive = true.
- /// </summary>
- /// <remarks>
- /// Added so that SPIClassIterator can locate this Codec. The iterator
- /// only recognises classes that have empty constructors.
- /// </remarks>
- public PreFlexRWCodec()
- : this(true)
- { }
-
- /// <summary>
- /// </summary>
- /// <param name="oldFormatImpersonationIsActive">
- /// LUCENENET specific
- /// Added to remove dependency on then-static <see cref="LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE"/>
- /// </param>
- public PreFlexRWCodec(bool oldFormatImpersonationIsActive) : base()
- {
- _oldFormatImpersonationIsActive = oldFormatImpersonationIsActive;
- }
-
- public override PostingsFormat PostingsFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return Postings;
- }
- else
- {
- return base.PostingsFormat;
- }
- }
- }
-
- public override NormsFormat NormsFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return Norms;
- }
- else
- {
- return base.NormsFormat;
- }
- }
- }
-
- public override SegmentInfoFormat SegmentInfoFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return SegmentInfos;
- }
- else
- {
- return base.SegmentInfoFormat;
- }
- }
- }
-
- public override FieldInfosFormat FieldInfosFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return FieldInfos;
- }
- else
- {
- return base.FieldInfosFormat;
- }
- }
- }
-
- public override TermVectorsFormat TermVectorsFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return TermVectors;
- }
- else
- {
- return base.TermVectorsFormat;
- }
- }
- }
-
- public override StoredFieldsFormat StoredFieldsFormat
- {
- get
- {
- if (_oldFormatImpersonationIsActive)
- {
- return StoredFields;
- }
- else
- {
- return base.StoredFieldsFormat;
- }
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosFormat.cs
deleted file mode 100644
index a02fe7f..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosFormat.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- ///
- /// <summary>
- /// @lucene.internal
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- internal class PreFlexRWFieldInfosFormat : Lucene3xFieldInfosFormat
- {
- public override FieldInfosReader FieldInfosReader
- {
- get
- {
- return new PreFlexRWFieldInfosReader();
- }
- }
-
- public override FieldInfosWriter FieldInfosWriter
- {
- get
- {
- return new PreFlexRWFieldInfosWriter();
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosReader.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosReader.cs
deleted file mode 100644
index 458951e..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosReader.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using System.Collections.Generic;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using CorruptIndexException = Lucene.Net.Index.CorruptIndexException;
- using Directory = Lucene.Net.Store.Directory;
- using DocValuesType = Lucene.Net.Index.DocValuesType;
- using FieldInfo = Lucene.Net.Index.FieldInfo;
- using FieldInfos = Lucene.Net.Index.FieldInfos;
- using IndexFileNames = Lucene.Net.Index.IndexFileNames;
- using IndexFormatTooNewException = Lucene.Net.Index.IndexFormatTooNewException;
- using IndexFormatTooOldException = Lucene.Net.Index.IndexFormatTooOldException;
- using IndexInput = Lucene.Net.Store.IndexInput;
- using IndexOptions = Lucene.Net.Index.IndexOptions;
- using IOContext = Lucene.Net.Store.IOContext;
- using SegmentInfo = Lucene.Net.Index.SegmentInfo;
-
- /// <summary>
- /// @lucene.internal
- /// @lucene.experimental
- /// </summary>
- internal class PreFlexRWFieldInfosReader : FieldInfosReader
- {
- internal const int FORMAT_MINIMUM = PreFlexRWFieldInfosWriter.FORMAT_START;
-
- public override FieldInfos Read(Directory directory, string segmentName, string segmentSuffix, IOContext iocontext)
- {
- string fileName = IndexFileNames.SegmentFileName(segmentName, "", PreFlexRWFieldInfosWriter.FIELD_INFOS_EXTENSION);
- IndexInput input = directory.OpenInput(fileName, iocontext);
-
- try
- {
- int format = input.ReadVInt32();
-
- if (format > FORMAT_MINIMUM)
- {
- throw new IndexFormatTooOldException(input, format, FORMAT_MINIMUM, PreFlexRWFieldInfosWriter.FORMAT_CURRENT);
- }
- if (format < PreFlexRWFieldInfosWriter.FORMAT_CURRENT && format != PreFlexRWFieldInfosWriter.FORMAT_PREFLEX_RW)
- {
- throw new IndexFormatTooNewException(input, format, FORMAT_MINIMUM, PreFlexRWFieldInfosWriter.FORMAT_CURRENT);
- }
-
- int size = input.ReadVInt32(); //read in the size
- FieldInfo[] infos = new FieldInfo[size];
-
- for (int i = 0; i < size; i++)
- {
- string name = input.ReadString();
- int fieldNumber = format == PreFlexRWFieldInfosWriter.FORMAT_PREFLEX_RW ? input.ReadInt32() : i;
- byte bits = input.ReadByte();
- bool isIndexed = (bits & PreFlexRWFieldInfosWriter.IS_INDEXED) != 0;
- bool storeTermVector = (bits & PreFlexRWFieldInfosWriter.STORE_TERMVECTOR) != 0;
- bool omitNorms = (bits & PreFlexRWFieldInfosWriter.OMIT_NORMS) != 0;
- bool storePayloads = (bits & PreFlexRWFieldInfosWriter.STORE_PAYLOADS) != 0;
- IndexOptions? indexOptions;
- if (!isIndexed)
- {
- indexOptions = null;
- }
- else if ((bits & PreFlexRWFieldInfosWriter.OMIT_TERM_FREQ_AND_POSITIONS) != 0)
- {
- indexOptions = IndexOptions.DOCS_ONLY;
- }
- else if ((bits & PreFlexRWFieldInfosWriter.OMIT_POSITIONS) != 0)
- {
- if (format <= PreFlexRWFieldInfosWriter.FORMAT_OMIT_POSITIONS)
- {
- indexOptions = IndexOptions.DOCS_AND_FREQS;
- }
- else
- {
- throw new CorruptIndexException("Corrupt fieldinfos, OMIT_POSITIONS set but format=" + format + " (resource: " + input + ")");
- }
- }
- else
- {
- indexOptions = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
- }
-
- // LUCENE-3027: past indices were able to write
- // storePayloads=true when omitTFAP is also true,
- // which is invalid. We correct that, here:
- if (indexOptions != IndexOptions.DOCS_AND_FREQS_AND_POSITIONS)
- {
- storePayloads = false;
- }
-
- DocValuesType? normType = isIndexed && !omitNorms ? (DocValuesType?)DocValuesType.NUMERIC : null;
- if (format == PreFlexRWFieldInfosWriter.FORMAT_PREFLEX_RW && normType != null)
- {
- // RW can have norms but doesn't write them
- normType = input.ReadByte() != 0 ? (DocValuesType?)DocValuesType.NUMERIC : null;
- }
-
- infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector, omitNorms, storePayloads, indexOptions, null, normType, null);
- }
-
- if (input.FilePointer != input.Length)
- {
- throw new CorruptIndexException("did not read all bytes from file \"" + fileName + "\": read " + input.FilePointer + " vs size " + input.Length + " (resource: " + input + ")");
- }
- return new FieldInfos(infos);
- }
- finally
- {
- input.Dispose();
- }
- }
-
- public static void Files(Directory dir, SegmentInfo info, ISet<string> files)
- {
- files.Add(IndexFileNames.SegmentFileName(info.Name, "", PreFlexRWFieldInfosWriter.FIELD_INFOS_EXTENSION));
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosWriter.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosWriter.cs
deleted file mode 100644
index e0fef49..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldInfosWriter.cs
+++ /dev/null
@@ -1,130 +0,0 @@
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Directory = Lucene.Net.Store.Directory;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using FieldInfo = Lucene.Net.Index.FieldInfo;
- using FieldInfos = Lucene.Net.Index.FieldInfos;
- using IndexFileNames = Lucene.Net.Index.IndexFileNames;
- using IndexOptions = Lucene.Net.Index.IndexOptions;
- using IndexOutput = Lucene.Net.Store.IndexOutput;
- using IOContext = Lucene.Net.Store.IOContext;
- using IOUtils = Lucene.Net.Util.IOUtils;
-
- /// <summary>
- /// @lucene.internal
- /// @lucene.experimental
- /// </summary>
- internal class PreFlexRWFieldInfosWriter : FieldInfosWriter
- {
- // TODO move to test-framework preflex RW?
-
- /// <summary>
- /// Extension of field infos </summary>
- internal const string FIELD_INFOS_EXTENSION = "fnm";
-
- // First used in 2.9; prior to 2.9 there was no format header
- internal const int FORMAT_START = -2;
-
- // First used in 3.4: omit only positional information
- internal const int FORMAT_OMIT_POSITIONS = -3;
-
- internal static readonly int FORMAT_PREFLEX_RW = int.MinValue;
-
- // whenever you add a new format, make it 1 smaller (negative version logic)!
- internal const int FORMAT_CURRENT = FORMAT_OMIT_POSITIONS;
-
- internal const sbyte IS_INDEXED = 0x1;
- internal const sbyte STORE_TERMVECTOR = 0x2;
- internal const sbyte OMIT_NORMS = 0x10;
- internal const sbyte STORE_PAYLOADS = 0x20;
- internal const sbyte OMIT_TERM_FREQ_AND_POSITIONS = 0x40;
- internal const sbyte OMIT_POSITIONS = -128;
-
- public override void Write(Directory directory, string segmentName, string segmentSuffix, FieldInfos infos, IOContext context)
- {
- string fileName = IndexFileNames.SegmentFileName(segmentName, "", FIELD_INFOS_EXTENSION);
- IndexOutput output = directory.CreateOutput(fileName, context);
- bool success = false;
- try
- {
- output.WriteVInt32(FORMAT_PREFLEX_RW);
- output.WriteVInt32(infos.Count);
- foreach (FieldInfo fi in infos)
- {
- sbyte bits = 0x0;
- if (fi.HasVectors)
- {
- bits |= STORE_TERMVECTOR;
- }
- if (fi.OmitsNorms)
- {
- bits |= OMIT_NORMS;
- }
- if (fi.HasPayloads)
- {
- bits |= STORE_PAYLOADS;
- }
- if (fi.IsIndexed)
- {
- bits |= IS_INDEXED;
- Debug.Assert(fi.IndexOptions == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS || !fi.HasPayloads);
- if (fi.IndexOptions == IndexOptions.DOCS_ONLY)
- {
- bits |= OMIT_TERM_FREQ_AND_POSITIONS;
- }
- else if (fi.IndexOptions == IndexOptions.DOCS_AND_FREQS)
- {
- bits |= OMIT_POSITIONS;
- }
- }
- output.WriteString(fi.Name);
- /*
- * we need to write the field number since IW tries
- * to stabelize the field numbers across segments so the
- * FI ordinal is not necessarily equivalent to the field number
- */
- output.WriteInt32(fi.Number);
- output.WriteByte((byte)bits);
- if (fi.IsIndexed && !fi.OmitsNorms)
- {
- // to allow null norm types we need to indicate if norms are written
- // only in RW case
- output.WriteByte((byte)(sbyte)(fi.NormType == null ? 0 : 1));
- }
- Debug.Assert(fi.Attributes == null); // not used or supported
- }
- success = true;
- }
- finally
- {
- if (success)
- {
- output.Dispose();
- }
- else
- {
- IOUtils.CloseWhileHandlingException(output);
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldsWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldsWriter.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldsWriter.cs
deleted file mode 100644
index b0c8174..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWFieldsWriter.cs
+++ /dev/null
@@ -1,269 +0,0 @@
-using System.Collections.Generic;
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using BytesRef = Lucene.Net.Util.BytesRef;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using CorruptIndexException = Lucene.Net.Index.CorruptIndexException;
- using FieldInfo = Lucene.Net.Index.FieldInfo;
- using IndexFileNames = Lucene.Net.Index.IndexFileNames;
- using IndexOptions = Lucene.Net.Index.IndexOptions;
- using IndexOutput = Lucene.Net.Store.IndexOutput;
- using IOUtils = Lucene.Net.Util.IOUtils;
- using SegmentWriteState = Lucene.Net.Index.SegmentWriteState;
-
-#pragma warning disable 612, 618
- internal class PreFlexRWFieldsWriter : FieldsConsumer
- {
- private readonly TermInfosWriter TermsOut;
- private readonly IndexOutput FreqOut;
- private readonly IndexOutput ProxOut;
- private readonly PreFlexRWSkipListWriter SkipListWriter;
- private readonly int TotalNumDocs;
-
- public PreFlexRWFieldsWriter(SegmentWriteState state)
- {
- TermsOut = new TermInfosWriter(state.Directory, state.SegmentInfo.Name, state.FieldInfos, state.TermIndexInterval);
-
- bool success = false;
- try
- {
- string freqFile = IndexFileNames.SegmentFileName(state.SegmentInfo.Name, "", Lucene3xPostingsFormat.FREQ_EXTENSION);
- FreqOut = state.Directory.CreateOutput(freqFile, state.Context);
- TotalNumDocs = state.SegmentInfo.DocCount;
- success = true;
- }
- finally
- {
- if (!success)
- {
- IOUtils.CloseWhileHandlingException(TermsOut);
- }
- }
-
- success = false;
- try
- {
- if (state.FieldInfos.HasProx)
- {
- string proxFile = IndexFileNames.SegmentFileName(state.SegmentInfo.Name, "", Lucene3xPostingsFormat.PROX_EXTENSION);
- ProxOut = state.Directory.CreateOutput(proxFile, state.Context);
- }
- else
- {
- ProxOut = null;
- }
- success = true;
- }
- finally
- {
- if (!success)
- {
- IOUtils.CloseWhileHandlingException(TermsOut, FreqOut);
- }
- }
-
- SkipListWriter = new PreFlexRWSkipListWriter(TermsOut.SkipInterval, TermsOut.MaxSkipLevels, TotalNumDocs, FreqOut, ProxOut);
- //System.out.println("\nw start seg=" + segment);
- }
-
- public override TermsConsumer AddField(FieldInfo field)
- {
- Debug.Assert(field.Number != -1);
- if (field.IndexOptions >= IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS)
- {
- throw new System.NotSupportedException("this codec cannot index offsets");
- }
- //System.out.println("w field=" + field.Name + " storePayload=" + field.storePayloads + " number=" + field.number);
- return new PreFlexTermsWriter(this, field);
- }
-
- public override void Dispose()
- {
- IOUtils.Close(TermsOut, FreqOut, ProxOut);
- }
-
- private class PreFlexTermsWriter : TermsConsumer
- {
- internal virtual void InitializeInstanceFields()
- {
- postingsWriter = new PostingsWriter(this);
- }
-
- private readonly PreFlexRWFieldsWriter OuterInstance;
-
- internal readonly FieldInfo FieldInfo;
- internal readonly bool OmitTF;
- internal readonly bool StorePayloads;
-
- internal readonly TermInfo TermInfo = new TermInfo();
- internal PostingsWriter postingsWriter;
-
- public PreFlexTermsWriter(PreFlexRWFieldsWriter outerInstance, FieldInfo fieldInfo)
- {
- this.OuterInstance = outerInstance;
-
- InitializeInstanceFields();
- this.FieldInfo = fieldInfo;
- OmitTF = fieldInfo.IndexOptions == IndexOptions.DOCS_ONLY;
- StorePayloads = fieldInfo.HasPayloads;
- }
-
- internal class PostingsWriter : PostingsConsumer
- {
- private readonly PreFlexRWFieldsWriter.PreFlexTermsWriter OuterInstance;
-
- public PostingsWriter(PreFlexRWFieldsWriter.PreFlexTermsWriter outerInstance)
- {
- this.OuterInstance = outerInstance;
- }
-
- internal int LastDocID;
- internal int LastPayloadLength = -1;
- internal int LastPosition;
- internal int Df;
-
- public PostingsWriter Reset()
- {
- Df = 0;
- LastDocID = 0;
- LastPayloadLength = -1;
- return this;
- }
-
- public override void StartDoc(int docID, int termDocFreq)
- {
- //System.out.println(" w doc=" + docID);
-
- int delta = docID - LastDocID;
- if (docID < 0 || (Df > 0 && delta <= 0))
- {
- throw new CorruptIndexException("docs out of order (" + docID + " <= " + LastDocID + " )");
- }
-
- if ((++Df % OuterInstance.OuterInstance.TermsOut.SkipInterval) == 0)
- {
- OuterInstance.OuterInstance.SkipListWriter.SetSkipData(LastDocID, OuterInstance.StorePayloads, LastPayloadLength);
- OuterInstance.OuterInstance.SkipListWriter.BufferSkip(Df);
- }
-
- LastDocID = docID;
-
- Debug.Assert(docID < OuterInstance.OuterInstance.TotalNumDocs, "docID=" + docID + " totalNumDocs=" + OuterInstance.OuterInstance.TotalNumDocs);
-
- if (OuterInstance.OmitTF)
- {
- OuterInstance.OuterInstance.FreqOut.WriteVInt32(delta);
- }
- else
- {
- int code = delta << 1;
- if (termDocFreq == 1)
- {
- OuterInstance.OuterInstance.FreqOut.WriteVInt32(code | 1);
- }
- else
- {
- OuterInstance.OuterInstance.FreqOut.WriteVInt32(code);
- OuterInstance.OuterInstance.FreqOut.WriteVInt32(termDocFreq);
- }
- }
- LastPosition = 0;
- }
-
- public override void AddPosition(int position, BytesRef payload, int startOffset, int endOffset)
- {
- Debug.Assert(OuterInstance.OuterInstance.ProxOut != null);
- Debug.Assert(startOffset == -1);
- Debug.Assert(endOffset == -1);
- //System.out.println(" w pos=" + position + " payl=" + payload);
- int delta = position - LastPosition;
- LastPosition = position;
-
- if (OuterInstance.StorePayloads)
- {
- int payloadLength = payload == null ? 0 : payload.Length;
- if (payloadLength != LastPayloadLength)
- {
- //System.out.println(" write payload len=" + payloadLength);
- LastPayloadLength = payloadLength;
- OuterInstance.OuterInstance.ProxOut.WriteVInt32((delta << 1) | 1);
- OuterInstance.OuterInstance.ProxOut.WriteVInt32(payloadLength);
- }
- else
- {
- OuterInstance.OuterInstance.ProxOut.WriteVInt32(delta << 1);
- }
- if (payloadLength > 0)
- {
- OuterInstance.OuterInstance.ProxOut.WriteBytes(payload.Bytes, payload.Offset, payload.Length);
- }
- }
- else
- {
- OuterInstance.OuterInstance.ProxOut.WriteVInt32(delta);
- }
- }
-
- public override void FinishDoc()
- {
- }
- }
-
- public override PostingsConsumer StartTerm(BytesRef text)
- {
- //System.out.println(" w term=" + text.utf8ToString());
- OuterInstance.SkipListWriter.ResetSkip();
- TermInfo.FreqPointer = OuterInstance.FreqOut.FilePointer;
- if (OuterInstance.ProxOut != null)
- {
- TermInfo.ProxPointer = OuterInstance.ProxOut.FilePointer;
- }
- return postingsWriter.Reset();
- }
-
- public override void FinishTerm(BytesRef text, TermStats stats)
- {
- if (stats.DocFreq > 0)
- {
- long skipPointer = OuterInstance.SkipListWriter.WriteSkip(OuterInstance.FreqOut);
- TermInfo.DocFreq = stats.DocFreq;
- TermInfo.SkipOffset = (int)(skipPointer - TermInfo.FreqPointer);
- //System.out.println(" w finish term=" + text.utf8ToString() + " fnum=" + fieldInfo.number);
- OuterInstance.TermsOut.Add(FieldInfo.Number, text, TermInfo);
- }
- }
-
- public override void Finish(long sumTotalTermCount, long sumDocFreq, int docCount)
- {
- }
-
- public override IComparer<BytesRef> Comparer
- {
- get
- {
- return BytesRef.UTF8SortedAsUTF16Comparer;
- }
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsConsumer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsConsumer.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsConsumer.cs
deleted file mode 100644
index 2a91121..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsConsumer.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-using System;
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using System.Collections.Generic;
- using BytesRef = Lucene.Net.Util.BytesRef;
- using Directory = Lucene.Net.Store.Directory;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using FieldInfo = Lucene.Net.Index.FieldInfo;
- using IndexFileNames = Lucene.Net.Index.IndexFileNames;
- using IndexOutput = Lucene.Net.Store.IndexOutput;
- using IOContext = Lucene.Net.Store.IOContext;
- using IOUtils = Lucene.Net.Util.IOUtils;
-
- /// <summary>
- /// Writes and Merges Lucene 3.x norms format
- /// @lucene.experimental
- /// </summary>
- internal class PreFlexRWNormsConsumer : DocValuesConsumer
- {
- /// <summary>
- /// norms header placeholder </summary>
- private static readonly sbyte[] NORMS_HEADER = new sbyte[] { (sbyte)'N', (sbyte)'R', (sbyte)'M', -1 };
-
- /// <summary>
- /// Extension of norms file </summary>
- private const string NORMS_EXTENSION = "nrm";
-
- /// <summary>
- /// Extension of separate norms file </summary>
- /// @deprecated Only for reading existing 3.x indexes
- [Obsolete("Only for reading existing 3.x indexes")]
- private const string SEPARATE_NORMS_EXTENSION = "s";
-
- private readonly IndexOutput @out;
- private int LastFieldNumber = -1; // only for assert
-
- public PreFlexRWNormsConsumer(Directory directory, string segment, IOContext context)
- {
- string normsFileName = IndexFileNames.SegmentFileName(segment, "", NORMS_EXTENSION);
- bool success = false;
- IndexOutput output = null;
- try
- {
- output = directory.CreateOutput(normsFileName, context);
- // output.WriteBytes(NORMS_HEADER, 0, NORMS_HEADER.Length);
- foreach (var @sbyte in NORMS_HEADER)
- {
- output.WriteByte((byte)@sbyte);
- }
- @out = output;
- success = true;
- }
- finally
- {
- if (!success)
- {
- IOUtils.CloseWhileHandlingException(output);
- }
- }
- }
-
- public override void AddNumericField(FieldInfo field, IEnumerable<long?> values)
- {
- Debug.Assert(field.Number > LastFieldNumber, "writing norms fields out of order" + LastFieldNumber + " -> " + field.Number);
- foreach (var n in values)
- {
- if (((sbyte)(byte)(long)n) < sbyte.MinValue || ((sbyte)(byte)(long)n) > sbyte.MaxValue)
- {
- throw new System.NotSupportedException("3.x cannot index norms that won't fit in a byte, got: " + ((sbyte)(byte)(long)n));
- }
- @out.WriteByte((byte)(sbyte)n);
- }
- LastFieldNumber = field.Number;
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- IOUtils.Close(@out);
- }
-
- public override void AddBinaryField(FieldInfo field, IEnumerable<BytesRef> values)
- {
- throw new InvalidOperationException();
- }
-
- public override void AddSortedField(FieldInfo field, IEnumerable<BytesRef> values, IEnumerable<long?> docToOrd)
- {
- throw new InvalidOperationException();
- }
-
- public override void AddSortedSetField(FieldInfo field, IEnumerable<BytesRef> values, IEnumerable<long?> docToOrdCount, IEnumerable<long?> ords)
- {
- throw new InvalidOperationException();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsFormat.cs
deleted file mode 100644
index d85d5d3..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWNormsFormat.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using SegmentWriteState = Lucene.Net.Index.SegmentWriteState;
-
- /// <summary>
- /// @lucene.internal
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- internal class PreFlexRWNormsFormat : Lucene3xNormsFormat
- {
- public override DocValuesConsumer NormsConsumer(SegmentWriteState state)
- {
- return new PreFlexRWNormsConsumer(state.Directory, state.SegmentInfo.Name, state.Context);
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWPostingsFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWPostingsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWPostingsFormat.cs
deleted file mode 100644
index 962d95c..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWPostingsFormat.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using System;
-using System.Reflection;
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using LuceneTestCase = Lucene.Net.Util.LuceneTestCase;
- using SegmentReadState = Lucene.Net.Index.SegmentReadState;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using SegmentWriteState = Lucene.Net.Index.SegmentWriteState;
-
- /// <summary>
- /// Codec, only for testing, that can write and read the
- /// pre-flex index format.
- ///
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- internal class PreFlexRWPostingsFormat : Lucene3xPostingsFormat
- {
- public PreFlexRWPostingsFormat()
- {
- // NOTE: we impersonate the PreFlex codec so that it can
- // read the segments we write!
- }
-
- public override FieldsConsumer FieldsConsumer(SegmentWriteState state)
- {
- return new PreFlexRWFieldsWriter(state);
- }
-
- public override FieldsProducer FieldsProducer(SegmentReadState state)
- {
- // Whenever IW opens readers, eg for merging, we have to
- // keep terms order in UTF16:
-
- return new Lucene3xFieldsAnonymousInnerClassHelper(this, state.Directory, state.FieldInfos, state.SegmentInfo, state.Context, state.TermsIndexDivisor);
- }
-
- private class Lucene3xFieldsAnonymousInnerClassHelper : Lucene3xFields
- {
- private readonly PreFlexRWPostingsFormat OuterInstance;
-
- public Lucene3xFieldsAnonymousInnerClassHelper(PreFlexRWPostingsFormat outerInstance, Store.Directory directory, Index.FieldInfos fieldInfos, Index.SegmentInfo segmentInfo, Store.IOContext context, int termsIndexDivisor)
- : base(directory, fieldInfos, segmentInfo, context, termsIndexDivisor)
- {
- this.OuterInstance = outerInstance;
- }
-
- protected internal override bool SortTermsByUnicode()
- {
- // We carefully peek into stack track above us: if
- // we are part of a "merge", we must sort by UTF16:
- bool unicodeSortOrder = true;
-
- if(Util.StackTraceHelper.DoesStackTraceContainMethod("Merge"))
- {
- unicodeSortOrder = false;
- if (LuceneTestCase.VERBOSE)
- {
- Console.WriteLine("NOTE: PreFlexRW codec: forcing legacy UTF16 term sort order");
- }
- }
-
- return unicodeSortOrder;
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoFormat.cs
deleted file mode 100644
index 86d7e4d..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoFormat.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /// <summary>
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- internal class PreFlexRWSegmentInfoFormat : Lucene3xSegmentInfoFormat
- {
- private readonly SegmentInfoWriter Writer = new PreFlexRWSegmentInfoWriter();
-
- public override SegmentInfoWriter SegmentInfoWriter
- {
- get
- {
- return Writer;
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoWriter.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoWriter.cs
deleted file mode 100644
index 3019c51..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSegmentInfoWriter.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Directory = Lucene.Net.Store.Directory;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using FieldInfos = Lucene.Net.Index.FieldInfos;
- using IOContext = Lucene.Net.Store.IOContext;
- using SegmentInfo = Lucene.Net.Index.SegmentInfo;
- using SegmentInfos = Lucene.Net.Index.SegmentInfos;
-
- /// <summary>
- /// PreFlex implementation of <seealso cref="SegmentInfoWriter"/>.
- /// @lucene.experimental
- /// </summary>
-#pragma warning disable 612, 618
- internal class PreFlexRWSegmentInfoWriter : SegmentInfoWriter
- {
- // NOTE: this is not "really" 3.x format, because we are
- // writing each SI to its own file, vs 3.x where the list
- // of segments and SI for each segment is written into a
- // single segments_N file
-
- /// <summary>
- /// Save a single segment's info. </summary>
- public override void Write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext)
- {
- SegmentInfos.Write3xInfo(dir, si, ioContext);
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSkipListWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSkipListWriter.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSkipListWriter.cs
deleted file mode 100644
index 0ce2d24..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWSkipListWriter.cs
+++ /dev/null
@@ -1,138 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Lucene.Net.Support;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using IndexOutput = Lucene.Net.Store.IndexOutput;
-
- /// <summary>
- /// PreFlexRW skiplist implementation.
- /// @lucene.experimental
- /// </summary>
- public class PreFlexRWSkipListWriter : MultiLevelSkipListWriter
- {
- private int[] LastSkipDoc;
- private int[] LastSkipPayloadLength;
- private long[] LastSkipFreqPointer;
- private long[] LastSkipProxPointer;
-
- private IndexOutput FreqOutput;
- private IndexOutput ProxOutput;
-
- private int CurDoc;
- private bool CurStorePayloads;
- private int CurPayloadLength;
- private long CurFreqPointer;
- private long CurProxPointer;
-
- public PreFlexRWSkipListWriter(int skipInterval, int numberOfSkipLevels, int docCount, IndexOutput freqOutput, IndexOutput proxOutput)
- : base(skipInterval, numberOfSkipLevels, docCount)
- {
- this.FreqOutput = freqOutput;
- this.ProxOutput = proxOutput;
-
- LastSkipDoc = new int[numberOfSkipLevels];
- LastSkipPayloadLength = new int[numberOfSkipLevels];
- LastSkipFreqPointer = new long[numberOfSkipLevels];
- LastSkipProxPointer = new long[numberOfSkipLevels];
- }
-
- /// <summary>
- /// Sets the values for the current skip data.
- /// </summary>
- public virtual void SetSkipData(int doc, bool storePayloads, int payloadLength)
- {
- this.CurDoc = doc;
- this.CurStorePayloads = storePayloads;
- this.CurPayloadLength = payloadLength;
- this.CurFreqPointer = FreqOutput.FilePointer;
- if (ProxOutput != null)
- {
- this.CurProxPointer = ProxOutput.FilePointer;
- }
- }
-
- public override void ResetSkip()
- {
- base.ResetSkip();
- Arrays.Fill(LastSkipDoc, 0);
- Arrays.Fill(LastSkipPayloadLength, -1); // we don't have to write the first length in the skip list
- Arrays.Fill(LastSkipFreqPointer, FreqOutput.FilePointer);
- if (ProxOutput != null)
- {
- Arrays.Fill(LastSkipProxPointer, ProxOutput.FilePointer);
- }
- }
-
- protected override void WriteSkipData(int level, IndexOutput skipBuffer)
- {
- // To efficiently store payloads in the posting lists we do not store the length of
- // every payload. Instead we omit the length for a payload if the previous payload had
- // the same length.
- // However, in order to support skipping the payload length at every skip point must be known.
- // So we use the same length encoding that we use for the posting lists for the skip data as well:
- // Case 1: current field does not store payloads
- // SkipDatum --> DocSkip, FreqSkip, ProxSkip
- // DocSkip,FreqSkip,ProxSkip --> VInt
- // DocSkip records the document number before every SkipInterval th document in TermFreqs.
- // Document numbers are represented as differences from the previous value in the sequence.
- // Case 2: current field stores payloads
- // SkipDatum --> DocSkip, PayloadLength?, FreqSkip,ProxSkip
- // DocSkip,FreqSkip,ProxSkip --> VInt
- // PayloadLength --> VInt
- // In this case DocSkip/2 is the difference between
- // the current and the previous value. If DocSkip
- // is odd, then a PayloadLength encoded as VInt follows,
- // if DocSkip is even, then it is assumed that the
- // current payload length equals the length at the previous
- // skip point
- if (CurStorePayloads)
- {
- int delta = CurDoc - LastSkipDoc[level];
- if (CurPayloadLength == LastSkipPayloadLength[level])
- {
- // the current payload length equals the length at the previous skip point,
- // so we don't store the length again
- skipBuffer.WriteVInt32(delta * 2);
- }
- else
- {
- // the payload length is different from the previous one. We shift the DocSkip,
- // set the lowest bit and store the current payload length as VInt.
- skipBuffer.WriteVInt32(delta * 2 + 1);
- skipBuffer.WriteVInt32(CurPayloadLength);
- LastSkipPayloadLength[level] = CurPayloadLength;
- }
- }
- else
- {
- // current field does not store payloads
- skipBuffer.WriteVInt32(CurDoc - LastSkipDoc[level]);
- }
-
- skipBuffer.WriteVInt32((int)(CurFreqPointer - LastSkipFreqPointer[level]));
- skipBuffer.WriteVInt32((int)(CurProxPointer - LastSkipProxPointer[level]));
-
- LastSkipDoc[level] = CurDoc;
-
- LastSkipFreqPointer[level] = CurFreqPointer;
- LastSkipProxPointer[level] = CurProxPointer;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsFormat.cs
deleted file mode 100644
index 63ffc4a..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsFormat.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Directory = Lucene.Net.Store.Directory;
- using IOContext = Lucene.Net.Store.IOContext;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using SegmentInfo = Lucene.Net.Index.SegmentInfo;
-
-#pragma warning disable 612, 618
- internal class PreFlexRWStoredFieldsFormat : Lucene3xStoredFieldsFormat
- {
- public override StoredFieldsWriter FieldsWriter(Directory directory, SegmentInfo segmentInfo, IOContext context)
- {
- return new PreFlexRWStoredFieldsWriter(directory, segmentInfo.Name, context);
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsWriter.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsWriter.cs
deleted file mode 100644
index 628564a..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWStoredFieldsWriter.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-using System;
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Lucene.Net.Support;
- using BytesRef = Lucene.Net.Util.BytesRef;
- using Directory = Lucene.Net.Store.Directory;
-
- /// <summary>
- /// Copyright 2004 The Apache Software Foundation
- ///
- /// Licensed under the Apache License, Version 2.0 (the "License"); you may not
- /// use this file except in compliance with the License. You may obtain a copy of
- /// the License at
- ///
- /// http://www.apache.org/licenses/LICENSE-2.0
- ///
- /// Unless required by applicable law or agreed to in writing, software
- /// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- /// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- /// License for the specific language governing permissions and limitations under
- /// the License.
- /// </summary>
-
- using FieldInfo = Lucene.Net.Index.FieldInfo;
- using FieldInfos = Lucene.Net.Index.FieldInfos;
- using IIndexableField = Lucene.Net.Index.IIndexableField;
- using IndexFileNames = Lucene.Net.Index.IndexFileNames;
- using IndexOutput = Lucene.Net.Store.IndexOutput;
- using IOContext = Lucene.Net.Store.IOContext;
- using IOUtils = Lucene.Net.Util.IOUtils;
-
- /// <summary>
- /// @lucene.experimental </summary>
-#pragma warning disable 612, 618
- internal sealed class PreFlexRWStoredFieldsWriter : StoredFieldsWriter
- {
- private readonly Directory Directory;
- private readonly string Segment;
- private IndexOutput FieldsStream;
- private IndexOutput IndexStream;
-
- public PreFlexRWStoredFieldsWriter(Directory directory, string segment, IOContext context)
- {
- Debug.Assert(directory != null);
- this.Directory = directory;
- this.Segment = segment;
-
- bool success = false;
- try
- {
- FieldsStream = directory.CreateOutput(IndexFileNames.SegmentFileName(segment, "", Lucene3xStoredFieldsReader.FIELDS_EXTENSION), context);
- IndexStream = directory.CreateOutput(IndexFileNames.SegmentFileName(segment, "", Lucene3xStoredFieldsReader.FIELDS_INDEX_EXTENSION), context);
-
- FieldsStream.WriteInt32(Lucene3xStoredFieldsReader.FORMAT_CURRENT);
- IndexStream.WriteInt32(Lucene3xStoredFieldsReader.FORMAT_CURRENT);
-
- success = true;
- }
- finally
- {
- if (!success)
- {
- Abort();
- }
- }
- }
-
- // Writes the contents of buffer into the fields stream
- // and adds a new entry for this document into the index
- // stream. this assumes the buffer was already written
- // in the correct fields format.
- public override void StartDocument(int numStoredFields)
- {
- IndexStream.WriteInt64(FieldsStream.FilePointer);
- FieldsStream.WriteVInt32(numStoredFields);
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- try
- {
- IOUtils.Close(FieldsStream, IndexStream);
- }
- finally
- {
- FieldsStream = IndexStream = null;
- }
- }
- }
-
- public override void Abort()
- {
- try
- {
- Dispose();
- }
-#pragma warning disable 168
- catch (Exception ignored)
-#pragma warning restore 168
- {
- }
- IOUtils.DeleteFilesIgnoringExceptions(Directory, IndexFileNames.SegmentFileName(Segment, "", Lucene3xStoredFieldsReader.FIELDS_EXTENSION), IndexFileNames.SegmentFileName(Segment, "", Lucene3xStoredFieldsReader.FIELDS_INDEX_EXTENSION));
- }
-
- public override void WriteField(FieldInfo info, IIndexableField field)
- {
- FieldsStream.WriteVInt32(info.Number);
- int bits = 0;
- BytesRef bytes;
- string @string;
- // TODO: maybe a field should serialize itself?
- // this way we don't bake into indexer all these
- // specific encodings for different fields? and apps
- // can customize...
-
- object number = field.GetNumericValue();
- if (number != null)
- {
- if (number is sbyte? || number is short? || number is int?)
- {
- bits |= Lucene3xStoredFieldsReader.FIELD_IS_NUMERIC_INT;
- }
- else if (number is long?)
- {
- bits |= Lucene3xStoredFieldsReader.FIELD_IS_NUMERIC_LONG;
- }
- else if (number is float?)
- {
- bits |= Lucene3xStoredFieldsReader.FIELD_IS_NUMERIC_FLOAT;
- }
- else if (number is double?)
- {
- bits |= Lucene3xStoredFieldsReader.FIELD_IS_NUMERIC_DOUBLE;
- }
- else
- {
- throw new System.ArgumentException("cannot store numeric type " + number.GetType());
- }
- @string = null;
- bytes = null;
- }
- else
- {
- bytes = field.GetBinaryValue();
- if (bytes != null)
- {
- bits |= Lucene3xStoredFieldsReader.FIELD_IS_BINARY;
- @string = null;
- }
- else
- {
- @string = field.GetStringValue();
- if (@string == null)
- {
- throw new System.ArgumentException("field " + field.Name + " is stored but does not have binaryValue, stringValue nor numericValue");
- }
- }
- }
-
- FieldsStream.WriteByte((byte)(sbyte)bits);
-
- if (bytes != null)
- {
- FieldsStream.WriteVInt32(bytes.Length);
- FieldsStream.WriteBytes(bytes.Bytes, bytes.Offset, bytes.Length);
- }
- else if (@string != null)
- {
- FieldsStream.WriteString(field.GetStringValue());
- }
- else
- {
- if (number is sbyte? || number is short? || number is int?)
- {
- FieldsStream.WriteInt32((int)number);
- }
- else if (number is long?)
- {
- FieldsStream.WriteInt64((long)number);
- }
- else if (number is float?)
- {
- FieldsStream.WriteInt32(Number.SingleToInt32Bits((float)number));
- }
- else if (number is double?)
- {
- FieldsStream.WriteInt64(BitConverter.DoubleToInt64Bits((double)number));
- }
- else
- {
- Debug.Assert(false);
- }
- }
- }
-
- public override void Finish(FieldInfos fis, int numDocs)
- {
- if (4 + ((long)numDocs) * 8 != IndexStream.FilePointer)
- // this is most likely a bug in Sun JRE 1.6.0_04/_05;
- // we detect that the bug has struck, here, and
- // throw an exception to prevent the corruption from
- // entering the index. See LUCENE-1282 for
- // details.
- {
- throw new Exception("fdx size mismatch: docCount is " + numDocs + " but fdx file size is " + IndexStream.FilePointer + " file=" + IndexStream.ToString() + "; now aborting this merge to prevent index corruption");
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8304ca82/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWTermVectorsFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWTermVectorsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWTermVectorsFormat.cs
deleted file mode 100644
index 871ee07..0000000
--- a/src/Lucene.Net.TestFramework/Codecs/lucene3x/PreFlexRWTermVectorsFormat.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Diagnostics;
-
-namespace Lucene.Net.Codecs.Lucene3x
-{
- using Directory = Lucene.Net.Store.Directory;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using FieldInfos = Lucene.Net.Index.FieldInfos;
- using IOContext = Lucene.Net.Store.IOContext;
- using LuceneTestCase = Lucene.Net.Util.LuceneTestCase;
- using SegmentInfo = Lucene.Net.Index.SegmentInfo;
-
-#pragma warning disable 612, 618
- internal class PreFlexRWTermVectorsFormat : Lucene3xTermVectorsFormat
- {
- public override TermVectorsWriter VectorsWriter(Directory directory, SegmentInfo segmentInfo, IOContext context)
- {
- return new PreFlexRWTermVectorsWriter(directory, segmentInfo.Name, context);
- }
-
- public override TermVectorsReader VectorsReader(Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context)
- {
- return new Lucene3xTermVectorsReaderAnonymousInnerClassHelper(this, directory, segmentInfo, fieldInfos, context);
- }
-
- private class Lucene3xTermVectorsReaderAnonymousInnerClassHelper : Lucene3xTermVectorsReader
- {
- private readonly PreFlexRWTermVectorsFormat OuterInstance;
-
- public Lucene3xTermVectorsReaderAnonymousInnerClassHelper(PreFlexRWTermVectorsFormat outerInstance, Directory directory, SegmentInfo segmentInfo, FieldInfos fieldInfos, IOContext context)
- : base(directory, segmentInfo, fieldInfos, context)
- {
- this.OuterInstance = outerInstance;
- }
-
- protected internal override bool SortTermsByUnicode()
- {
-
- // We carefully peek into stack track above us: if
- // we are part of a "merge", we must sort by UTF16:
- bool unicodeSortOrder = true;
-
- if (Util.StackTraceHelper.DoesStackTraceContainMethod("Merge"))
- {
- unicodeSortOrder = false;
- if (LuceneTestCase.VERBOSE)
- {
- Console.WriteLine("NOTE: PreFlexRW codec: forcing legacy UTF16 vector term sort order");
- }
- }
-
- return unicodeSortOrder;
- }
- }
- }
-#pragma warning restore 612, 618
-}
\ No newline at end of file