You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by pn...@apache.org on 2014/09/21 18:53:31 UTC
[5/7] Cleanup of codes, mostly SimpleText in this commit
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/cf1df6be/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosReader.cs b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosReader.cs
index ae01b58..1dd0ed2 100644
--- a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosReader.cs
+++ b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosReader.cs
@@ -1,157 +1,190 @@
-package org.apache.lucene.codecs.simpletext;
-
-/*
- * 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.
- */
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lucene.codecs.FieldInfosReader;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfo.DocValuesType;
-import org.apache.lucene.index.FieldInfos;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.FieldInfo.IndexOptions;
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.StringHelper;
-
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldInfosWriter.*;
-
-/**
- * reads plaintext field infos files
- * <p>
- * <b><font color="red">FOR RECREATIONAL USE ONLY</font></B>
- * @lucene.experimental
- */
-public class SimpleTextFieldInfosReader extends FieldInfosReader {
-
- @Override
- public FieldInfos read(Directory directory, String segmentName, String segmentSuffix, IOContext iocontext) {
- final String fileName = IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
- ChecksumIndexInput input = directory.openChecksumInput(fileName, iocontext);
- BytesRef scratch = new BytesRef();
-
- bool success = false;
- try {
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NUMFIELDS);
- final int size = Integer.parseInt(readString(NUMFIELDS.length, scratch));
- FieldInfo infos[] = new FieldInfo[size];
-
- for (int i = 0; i < size; i++) {
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NAME);
- String name = readString(NAME.length, scratch);
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NUMBER);
- int fieldNumber = Integer.parseInt(readString(NUMBER.length, scratch));
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, ISINDEXED);
- bool isIndexed = bool.parsebool(readString(ISINDEXED.length, scratch));
-
- final IndexOptions indexOptions;
- if (isIndexed) {
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, INDEXOPTIONS);
- indexOptions = IndexOptions.valueOf(readString(INDEXOPTIONS.length, scratch));
- } else {
- indexOptions = null;
- }
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, STORETV);
- bool storeTermVector = bool.parsebool(readString(STORETV.length, scratch));
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, PAYLOADS);
- bool storePayloads = bool.parsebool(readString(PAYLOADS.length, scratch));
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NORMS);
- bool omitNorms = !bool.parsebool(readString(NORMS.length, scratch));
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NORMS_TYPE);
- String nrmType = readString(NORMS_TYPE.length, scratch);
- final DocValuesType normsType = docValuesType(nrmType);
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, DOCVALUES);
- String dvType = readString(DOCVALUES.length, scratch);
- final DocValuesType docValuesType = docValuesType(dvType);
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, DOCVALUES_GEN);
- final long dvGen = Long.parseLong(readString(DOCVALUES_GEN.length, scratch));
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, NUM_ATTS);
- int numAtts = Integer.parseInt(readString(NUM_ATTS.length, scratch));
- Map<String,String> atts = new HashMap<>();
-
- for (int j = 0; j < numAtts; j++) {
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, ATT_KEY);
- String key = readString(ATT_KEY.length, scratch);
-
- SimpleTextUtil.readLine(input, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, ATT_VALUE);
- String value = readString(ATT_VALUE.length, scratch);
- atts.put(key, value);
- }
-
- infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector,
- omitNorms, storePayloads, indexOptions, docValuesType, normsType, Collections.unmodifiableMap(atts));
- infos[i].setDocValuesGen(dvGen);
- }
-
- SimpleTextUtil.checkFooter(input);
-
- FieldInfos fieldInfos = new FieldInfos(infos);
- success = true;
- return fieldInfos;
- } finally {
- if (success) {
- input.close();
- } else {
- IOUtils.closeWhileHandlingException(input);
- }
- }
- }
-
- public DocValuesType docValuesType(String dvType) {
- if ("false".equals(dvType)) {
- return null;
- } else {
- return DocValuesType.valueOf(dvType);
- }
- }
-
- private String readString(int offset, BytesRef scratch) {
- return new String(scratch.bytes, scratch.offset+offset, scratch.length-offset, StandardCharsets.UTF_8);
- }
-}
+using System;
+using System.Diagnostics;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Codecs.SimpleText
+{
+
+ /*
+ * 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 = index.FieldInfo;
+ using DocValuesType = index.FieldInfo.DocValuesType;
+ using FieldInfos = index.FieldInfos;
+ using IndexFileNames = index.IndexFileNames;
+ using IndexOptions = index.FieldInfo.IndexOptions;
+ using ChecksumIndexInput = store.ChecksumIndexInput;
+ using Directory = store.Directory;
+ using IOContext = store.IOContext;
+ using BytesRef = util.BytesRef;
+ using IOUtils = util.IOUtils;
+ using StringHelper = util.StringHelper;
+
+//JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+ import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldInfosWriter.*;
+
+ /// <summary>
+ /// reads plaintext field infos files
+ /// <para>
+ /// <b><font color="red">FOR RECREATIONAL USE ONLY</font></B>
+ /// @lucene.experimental
+ /// </para>
+ /// </summary>
+ public class SimpleTextFieldInfosReader : FieldInfosReader
+ {
+
+//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
+//ORIGINAL LINE: @Override public index.FieldInfos read(store.Directory directory, String segmentName, String segmentSuffix, store.IOContext iocontext) throws java.io.IOException
+ public override FieldInfos read(Directory directory, string segmentName, string segmentSuffix, IOContext iocontext)
+ {
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final String fileName = index.IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
+ string fileName = IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
+ ChecksumIndexInput input = directory.openChecksumInput(fileName, iocontext);
+ BytesRef scratch = new BytesRef();
+
+ bool success = false;
+ try
+ {
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NUMFIELDS));
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final int size = Integer.parseInt(readString(NUMFIELDS.length, scratch));
+ int size = Convert.ToInt32(readString(NUMFIELDS.length, scratch));
+ FieldInfo[] infos = new FieldInfo[size];
+
+ for (int i = 0; i < size; i++)
+ {
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NAME));
+ string name = readString(NAME.length, scratch);
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NUMBER));
+ int fieldNumber = Convert.ToInt32(readString(NUMBER.length, scratch));
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, ISINDEXED));
+ bool isIndexed = Convert.ToBoolean(readString(ISINDEXED.length, scratch));
+
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final index.FieldInfo.IndexOptions indexOptions;
+ FieldInfo.IndexOptions indexOptions;
+ if (isIndexed)
+ {
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, INDEXOPTIONS));
+ indexOptions = FieldInfo.IndexOptions.valueOf(readString(INDEXOPTIONS.length, scratch));
+ }
+ else
+ {
+ indexOptions = null;
+ }
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, STORETV));
+ bool storeTermVector = Convert.ToBoolean(readString(STORETV.length, scratch));
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, PAYLOADS));
+ bool storePayloads = Convert.ToBoolean(readString(PAYLOADS.length, scratch));
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NORMS));
+ bool omitNorms = !Convert.ToBoolean(readString(NORMS.length, scratch));
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NORMS_TYPE));
+ string nrmType = readString(NORMS_TYPE.length, scratch);
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final index.FieldInfo.DocValuesType normsType = docValuesType(nrmType);
+ FieldInfo.DocValuesType normsType = docValuesType(nrmType);
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, DOCVALUES));
+ string dvType = readString(DOCVALUES.length, scratch);
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final index.FieldInfo.DocValuesType docValuesType = docValuesType(dvType);
+ FieldInfo.DocValuesType docValuesType = docValuesType(dvType);
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, DOCVALUES_GEN));
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final long dvGen = Long.parseLong(readString(DOCVALUES_GEN.length, scratch));
+ long dvGen = Convert.ToInt64(readString(DOCVALUES_GEN.length, scratch));
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, NUM_ATTS));
+ int numAtts = Convert.ToInt32(readString(NUM_ATTS.length, scratch));
+ IDictionary<string, string> atts = new Dictionary<string, string>();
+
+ for (int j = 0; j < numAtts; j++)
+ {
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, ATT_KEY));
+ string key = readString(ATT_KEY.length, scratch);
+
+ SimpleTextUtil.ReadLine(input, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, ATT_VALUE));
+ string value = readString(ATT_VALUE.length, scratch);
+ atts[key] = value;
+ }
+
+ infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector, omitNorms, storePayloads, indexOptions, docValuesType, normsType, Collections.unmodifiableMap(atts));
+ infos[i].DocValuesGen = dvGen;
+ }
+
+ SimpleTextUtil.CheckFooter(input);
+
+ FieldInfos fieldInfos = new FieldInfos(infos);
+ success = true;
+ return fieldInfos;
+ }
+ finally
+ {
+ if (success)
+ {
+ input.close();
+ }
+ else
+ {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ public virtual FieldInfo.DocValuesType docValuesType(string dvType)
+ {
+ if ("false".Equals(dvType))
+ {
+ return null;
+ }
+ else
+ {
+ return FieldInfo.DocValuesType.valueOf(dvType);
+ }
+ }
+
+ private string readString(int offset, BytesRef scratch)
+ {
+ return new string(scratch.bytes, scratch.offset + offset, scratch.length - offset, StandardCharsets.UTF_8);
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/cf1df6be/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosWriter.cs b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosWriter.cs
index b3bdbed..d90d428 100644
--- a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosWriter.cs
+++ b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldInfosWriter.cs
@@ -1,149 +1,171 @@
-package org.apache.lucene.codecs.simpletext;
-
-/*
- * 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.
- */
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.lucene.codecs.FieldInfosWriter;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfo.DocValuesType;
-import org.apache.lucene.index.FieldInfos;
-import org.apache.lucene.index.IndexFileNames;
-import org.apache.lucene.index.FieldInfo.IndexOptions;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.IOContext;
-import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.IOUtils;
-
-/**
- * writes plaintext field infos files
- * <p>
- * <b><font color="red">FOR RECREATIONAL USE ONLY</font></B>
- * @lucene.experimental
- */
-public class SimpleTextFieldInfosWriter extends FieldInfosWriter {
-
- /** Extension of field infos */
- static final String FIELD_INFOS_EXTENSION = "inf";
-
- static final BytesRef NUMFIELDS = new BytesRef("number of fields ");
- static final BytesRef NAME = new BytesRef(" name ");
- static final BytesRef NUMBER = new BytesRef(" number ");
- static final BytesRef ISINDEXED = new BytesRef(" indexed ");
- static final BytesRef STORETV = new BytesRef(" term vectors ");
- static final BytesRef STORETVPOS = new BytesRef(" term vector positions ");
- static final BytesRef STORETVOFF = new BytesRef(" term vector offsets ");
- static final BytesRef PAYLOADS = new BytesRef(" payloads ");
- static final BytesRef NORMS = new BytesRef(" norms ");
- static final BytesRef NORMS_TYPE = new BytesRef(" norms type ");
- static final BytesRef DOCVALUES = new BytesRef(" doc values ");
- static final BytesRef DOCVALUES_GEN = new BytesRef(" doc values gen ");
- static final BytesRef INDEXOPTIONS = new BytesRef(" index options ");
- static final BytesRef NUM_ATTS = new BytesRef(" attributes ");
- final static BytesRef ATT_KEY = new BytesRef(" key ");
- final static BytesRef ATT_VALUE = new BytesRef(" value ");
-
- @Override
- public void write(Directory directory, String segmentName, String segmentSuffix, FieldInfos infos, IOContext context) {
- final String fileName = IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
- IndexOutput out = directory.createOutput(fileName, context);
- BytesRef scratch = new BytesRef();
- bool success = false;
- try {
- SimpleTextUtil.write(out, NUMFIELDS);
- SimpleTextUtil.write(out, Integer.toString(infos.size()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- for (FieldInfo fi : infos) {
- SimpleTextUtil.write(out, NAME);
- SimpleTextUtil.write(out, fi.name, scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, NUMBER);
- SimpleTextUtil.write(out, Integer.toString(fi.number), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, ISINDEXED);
- SimpleTextUtil.write(out, bool.toString(fi.isIndexed()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- if (fi.isIndexed()) {
- Debug.Assert( fi.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0 || !fi.hasPayloads();
- SimpleTextUtil.write(out, INDEXOPTIONS);
- SimpleTextUtil.write(out, fi.getIndexOptions().toString(), scratch);
- SimpleTextUtil.writeNewline(out);
- }
-
- SimpleTextUtil.write(out, STORETV);
- SimpleTextUtil.write(out, bool.toString(fi.hasVectors()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, PAYLOADS);
- SimpleTextUtil.write(out, bool.toString(fi.hasPayloads()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, NORMS);
- SimpleTextUtil.write(out, bool.toString(!fi.omitsNorms()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, NORMS_TYPE);
- SimpleTextUtil.write(out, getDocValuesType(fi.getNormType()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, DOCVALUES);
- SimpleTextUtil.write(out, getDocValuesType(fi.getDocValuesType()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, DOCVALUES_GEN);
- SimpleTextUtil.write(out, Long.toString(fi.getDocValuesGen()), scratch);
- SimpleTextUtil.writeNewline(out);
-
- Map<String,String> atts = fi.attributes();
- int numAtts = atts == null ? 0 : atts.size();
- SimpleTextUtil.write(out, NUM_ATTS);
- SimpleTextUtil.write(out, Integer.toString(numAtts), scratch);
- SimpleTextUtil.writeNewline(out);
-
- if (numAtts > 0) {
- for (Map.Entry<String,String> entry : atts.entrySet()) {
- SimpleTextUtil.write(out, ATT_KEY);
- SimpleTextUtil.write(out, entry.getKey(), scratch);
- SimpleTextUtil.writeNewline(out);
-
- SimpleTextUtil.write(out, ATT_VALUE);
- SimpleTextUtil.write(out, entry.getValue(), scratch);
- SimpleTextUtil.writeNewline(out);
- }
- }
- }
- SimpleTextUtil.writeChecksum(out, scratch);
- success = true;
- } finally {
- if (success) {
- out.close();
- } else {
- IOUtils.closeWhileHandlingException(out);
- }
- }
- }
-
- private static String getDocValuesType(DocValuesType type) {
- return type == null ? "false" : type.toString();
- }
-}
+using System;
+using System.Diagnostics;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Codecs.SimpleText
+{
+
+ /*
+ * 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 = index.FieldInfo;
+ using DocValuesType = index.FieldInfo.DocValuesType;
+ using FieldInfos = index.FieldInfos;
+ using IndexFileNames = index.IndexFileNames;
+ using IndexOptions = index.FieldInfo.IndexOptions;
+ using Directory = store.Directory;
+ using IOContext = store.IOContext;
+ using IndexOutput = store.IndexOutput;
+ using BytesRef = util.BytesRef;
+ using IOUtils = util.IOUtils;
+
+ /// <summary>
+ /// writes plaintext field infos files
+ /// <para>
+ /// <b><font color="red">FOR RECREATIONAL USE ONLY</font></B>
+ /// @lucene.experimental
+ /// </para>
+ /// </summary>
+ public class SimpleTextFieldInfosWriter : FieldInfosWriter
+ {
+
+ /// <summary>
+ /// Extension of field infos </summary>
+ internal const string FIELD_INFOS_EXTENSION = "inf";
+
+ internal static readonly BytesRef NUMFIELDS = new BytesRef("number of fields ");
+ internal static readonly BytesRef NAME = new BytesRef(" name ");
+ internal static readonly BytesRef NUMBER = new BytesRef(" number ");
+ internal static readonly BytesRef ISINDEXED = new BytesRef(" indexed ");
+ internal static readonly BytesRef STORETV = new BytesRef(" term vectors ");
+ internal static readonly BytesRef STORETVPOS = new BytesRef(" term vector positions ");
+ internal static readonly BytesRef STORETVOFF = new BytesRef(" term vector offsets ");
+ internal static readonly BytesRef PAYLOADS = new BytesRef(" payloads ");
+ internal static readonly BytesRef NORMS = new BytesRef(" norms ");
+ internal static readonly BytesRef NORMS_TYPE = new BytesRef(" norms type ");
+ internal static readonly BytesRef DOCVALUES = new BytesRef(" doc values ");
+ internal static readonly BytesRef DOCVALUES_GEN = new BytesRef(" doc values gen ");
+ internal static readonly BytesRef INDEXOPTIONS = new BytesRef(" index options ");
+ internal static readonly BytesRef NUM_ATTS = new BytesRef(" attributes ");
+ internal static readonly BytesRef ATT_KEY = new BytesRef(" key ");
+ internal static readonly BytesRef ATT_VALUE = new BytesRef(" value ");
+
+//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
+//ORIGINAL LINE: @Override public void write(store.Directory directory, String segmentName, String segmentSuffix, index.FieldInfos infos, store.IOContext context) throws java.io.IOException
+ public override void write(Directory directory, string segmentName, string segmentSuffix, FieldInfos infos, IOContext context)
+ {
+//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
+//ORIGINAL LINE: final String fileName = index.IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
+ string fileName = IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
+ IndexOutput @out = directory.createOutput(fileName, context);
+ BytesRef scratch = new BytesRef();
+ bool success = false;
+ try
+ {
+ SimpleTextUtil.write(@out, NUMFIELDS);
+ SimpleTextUtil.write(@out, Convert.ToString(infos.size()), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ foreach (FieldInfo fi in infos)
+ {
+ SimpleTextUtil.write(@out, NAME);
+ SimpleTextUtil.write(@out, fi.name, scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, NUMBER);
+ SimpleTextUtil.write(@out, Convert.ToString(fi.number), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, ISINDEXED);
+ SimpleTextUtil.write(@out, Convert.ToString(fi.Indexed), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ if (fi.Indexed)
+ {
+ Debug.Assert(fi.IndexOptions.compareTo(FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0 || !fi.hasPayloads());
+ SimpleTextUtil.write(@out, INDEXOPTIONS);
+ SimpleTextUtil.write(@out, fi.IndexOptions.ToString(), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+ }
+
+ SimpleTextUtil.write(@out, STORETV);
+ SimpleTextUtil.write(@out, Convert.ToString(fi.hasVectors()), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, PAYLOADS);
+ SimpleTextUtil.write(@out, Convert.ToString(fi.hasPayloads()), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, NORMS);
+ SimpleTextUtil.write(@out, Convert.ToString(!fi.omitsNorms()), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, NORMS_TYPE);
+ SimpleTextUtil.write(@out, getDocValuesType(fi.NormType), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, DOCVALUES);
+ SimpleTextUtil.write(@out, getDocValuesType(fi.DocValuesType), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, DOCVALUES_GEN);
+ SimpleTextUtil.write(@out, Convert.ToString(fi.DocValuesGen), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ IDictionary<string, string> atts = fi.attributes();
+ int numAtts = atts == null ? 0 : atts.Count;
+ SimpleTextUtil.write(@out, NUM_ATTS);
+ SimpleTextUtil.write(@out, Convert.ToString(numAtts), scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ if (numAtts > 0)
+ {
+ foreach (KeyValuePair<string, string> entry in atts.SetOfKeyValuePairs())
+ {
+ SimpleTextUtil.write(@out, ATT_KEY);
+ SimpleTextUtil.write(@out, entry.Key, scratch);
+ SimpleTextUtil.WriteNewline(@out);
+
+ SimpleTextUtil.write(@out, ATT_VALUE);
+ SimpleTextUtil.write(@out, entry.Value, scratch);
+ SimpleTextUtil.WriteNewline(@out);
+ }
+ }
+ }
+ SimpleTextUtil.WriteChecksum(@out, scratch);
+ success = true;
+ }
+ finally
+ {
+ if (success)
+ {
+ @out.close();
+ }
+ else
+ {
+ IOUtils.closeWhileHandlingException(@out);
+ }
+ }
+ }
+
+ private static string getDocValuesType(FieldInfo.DocValuesType type)
+ {
+ return type == null ? "false" : type.ToString();
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/cf1df6be/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
index 63e999a..34025b9 100644
--- a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
+++ b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
@@ -1,690 +1,829 @@
-package org.apache.lucene.codecs.simpletext;
-
-/*
- * 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.
- */
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.lucene.codecs.FieldsProducer;
-import org.apache.lucene.index.DocsAndPositionsEnum;
-import org.apache.lucene.index.DocsEnum;
-import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfo.IndexOptions;
-import org.apache.lucene.index.FieldInfos;
-import org.apache.lucene.index.SegmentReadState;
-import org.apache.lucene.index.Terms;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.store.BufferedChecksumIndexInput;
-import org.apache.lucene.store.ChecksumIndexInput;
-import org.apache.lucene.store.IndexInput;
-import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.CharsRef;
-import org.apache.lucene.util.FixedBitSet;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.IntsRef;
-import org.apache.lucene.util.StringHelper;
-import org.apache.lucene.util.UnicodeUtil;
-import org.apache.lucene.util.fst.Builder;
-import org.apache.lucene.util.fst.BytesRefFSTEnum;
-import org.apache.lucene.util.fst.FST;
-import org.apache.lucene.util.fst.PairOutputs;
-import org.apache.lucene.util.fst.PositiveIntOutputs;
-import org.apache.lucene.util.fst.Util;
-
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.END;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.FIELD;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.TERM;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.DOC;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.FREQ;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.POS;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.START_OFFSET;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.END_OFFSET;
-import static org.apache.lucene.codecs.simpletext.SimpleTextFieldsWriter.PAYLOAD;
-
-class SimpleTextFieldsReader extends FieldsProducer {
- private final TreeMap<String,Long> fields;
- private final IndexInput in;
- private final FieldInfos fieldInfos;
- private final int maxDoc;
-
- public SimpleTextFieldsReader(SegmentReadState state) {
- this.maxDoc = state.segmentInfo.getDocCount();
- fieldInfos = state.fieldInfos;
- in = state.directory.openInput(SimpleTextPostingsFormat.getPostingsFileName(state.segmentInfo.name, state.segmentSuffix), state.context);
- bool success = false;
- try {
- fields = readFields(in.clone());
- success = true;
- } finally {
- if (!success) {
- IOUtils.closeWhileHandlingException(this);
- }
- }
- }
-
- private TreeMap<String,Long> readFields(IndexInput in) {
- ChecksumIndexInput input = new BufferedChecksumIndexInput(in);
- BytesRef scratch = new BytesRef(10);
- TreeMap<String,Long> fields = new TreeMap<>();
-
- while (true) {
- SimpleTextUtil.readLine(input, scratch);
- if (scratch.equals(END)) {
- SimpleTextUtil.checkFooter(input);
- return fields;
- } else if (StringHelper.startsWith(scratch, FIELD)) {
- String fieldName = new String(scratch.bytes, scratch.offset + FIELD.length, scratch.length - FIELD.length, StandardCharsets.UTF_8);
- fields.put(fieldName, input.getFilePointer());
- }
- }
- }
-
- private class SimpleTextTermsEnum extends TermsEnum {
- private final IndexOptions indexOptions;
- private int docFreq;
- private long totalTermFreq;
- private long docsStart;
- private bool ended;
- private final BytesRefFSTEnum<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fstEnum;
-
- public SimpleTextTermsEnum(FST<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fst, IndexOptions indexOptions) {
- this.indexOptions = indexOptions;
- fstEnum = new BytesRefFSTEnum<>(fst);
- }
-
- @Override
- public bool seekExact(BytesRef text) {
-
- final BytesRefFSTEnum.InputOutput<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> result = fstEnum.seekExact(text);
- if (result != null) {
- PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>> pair1 = result.output;
- PairOutputs.Pair<Long,Long> pair2 = pair1.output2;
- docsStart = pair1.output1;
- docFreq = pair2.output1.intValue();
- totalTermFreq = pair2.output2;
- return true;
- } else {
- return false;
- }
- }
+/*
+* 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 System.Linq;
+
+namespace Lucene.Net.Codecs.SimpleText
+{
+
+ using System;
+ using System.Diagnostics;
+ using System.Collections.Generic;
+
+ using DocsAndPositionsEnum = Index.DocsAndPositionsEnum;
+ using DocsEnum = Index.DocsEnum;
+ using FieldInfo = Index.FieldInfo;
+ using IndexOptions = Index.FieldInfo.IndexOptions;
+ using FieldInfos = Index.FieldInfos;
+ using SegmentReadState = Index.SegmentReadState;
+ using Terms = Index.Terms;
+ using TermsEnum = Index.TermsEnum;
+ using BufferedChecksumIndexInput = Store.BufferedChecksumIndexInput;
+ using ChecksumIndexInput = Store.ChecksumIndexInput;
+ using IndexInput = Store.IndexInput;
+ using ArrayUtil = Util.ArrayUtil;
+ using Bits = Util.Bits;
+ using BytesRef = Util.BytesRef;
+ using CharsRef = Util.CharsRef;
+ using FixedBitSet = Util.FixedBitSet;
+ using IOUtils = Util.IOUtils;
+ using IntsRef = Util.IntsRef;
+ using StringHelper = Util.StringHelper;
+ using UnicodeUtil = Util.UnicodeUtil;
+ using Builder = Util.Fst.Builder;
+ using BytesRefFSTEnum = Util.Fst.BytesRefFSTEnum;
+ using FST = Util.Fst.FST;
+ using PairOutputs = Util.Fst.PairOutputs;
+ using PositiveIntOutputs = Util.Fst.PositiveIntOutputs;
+ using Util = Util.Fst.Util;
+
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.END;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.FIELD;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.TERM;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.DOC;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.FREQ;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.POS;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.START_OFFSET;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.END_OFFSET;
+////JAVA TO C# CONVERTER TODO TASK: This Java 'import static' statement cannot be converted to .NET:
+// import static Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter.PAYLOAD;
+
+ internal class SimpleTextFieldsReader : FieldsProducer
+ {
+ private readonly SortedDictionary<string, long?> fields;
+ private readonly IndexInput _input;
+ private readonly FieldInfos fieldInfos;
+ private readonly int maxDoc;
+ private readonly IDictionary<string, SimpleTextTerms> _termsCache = new Dictionary<string, SimpleTextTerms>();
+
+ public SimpleTextFieldsReader(SegmentReadState state)
+ {
+ this.maxDoc = state.SegmentInfo.DocCount;
+ fieldInfos = state.FieldInfos;
+ _input =
+ state.Directory.OpenInput(
+ SimpleTextPostingsFormat.GetPostingsFileName(state.SegmentInfo.Name, state.SegmentSuffix),
+ state.Context);
+ bool success = false;
+ try
+ {
+ fields = readFields((IndexInput)_input.Clone());
+ success = true;
+ }
+ finally
+ {
+ if (!success)
+ {
+ IOUtils.CloseWhileHandlingException(this);
+ }
+ }
+ }
- @Override
- public SeekStatus seekCeil(BytesRef text) {
-
- //System.out.println("seek to text=" + text.utf8ToString());
- final BytesRefFSTEnum.InputOutput<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> result = fstEnum.seekCeil(text);
- if (result == null) {
- //System.out.println(" end");
- return SeekStatus.END;
- } else {
- //System.out.println(" got text=" + term.utf8ToString());
- PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>> pair1 = result.output;
- PairOutputs.Pair<Long,Long> pair2 = pair1.output2;
- docsStart = pair1.output1;
- docFreq = pair2.output1.intValue();
- totalTermFreq = pair2.output2;
-
- if (result.input.equals(text)) {
- //System.out.println(" match docsStart=" + docsStart);
- return SeekStatus.FOUND;
- } else {
- //System.out.println(" not match docsStart=" + docsStart);
- return SeekStatus.NOT_FOUND;
+ private SortedDictionary<string, long?> ReadFields(IndexInput @in)
+ {
+ ChecksumIndexInput input = new BufferedChecksumIndexInput(@in);
+ BytesRef scratch = new BytesRef(10);
+ SortedDictionary<string, long?> fields = new SortedDictionary<string, long?>();
+
+ while (true)
+ {
+ SimpleTextUtil.ReadLine(input, scratch);
+ if (scratch.Equals(END))
+ {
+ SimpleTextUtil.CheckFooter(input);
+ return fields;
+ }
+ else if (StringHelper.StartsWith(scratch, FIELD))
+ {
+ string fieldName = new string(scratch.Bytes, scratch.Offset + FIELD.length,
+ scratch.Length - FIELD.length, StandardCharsets.UTF_8);
+ fields[fieldName] = input.FilePointer;
+ }
+ }
}
- }
- }
- @Override
- public BytesRef next() {
- Debug.Assert( !ended;
- final BytesRefFSTEnum.InputOutput<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> result = fstEnum.next();
- if (result != null) {
- PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>> pair1 = result.output;
- PairOutputs.Pair<Long,Long> pair2 = pair1.output2;
- docsStart = pair1.output1;
- docFreq = pair2.output1.intValue();
- totalTermFreq = pair2.output2;
- return result.input;
- } else {
- return null;
- }
- }
+ private class SimpleTextTermsEnum : TermsEnum
+ {
+ private readonly SimpleTextFieldsReader outerInstance;
+
+ internal readonly FieldInfo.IndexOptions indexOptions;
+ internal int docFreq_Renamed;
+ internal long totalTermFreq_Renamed;
+ internal long docsStart;
+ internal bool ended;
+ internal readonly BytesRefFSTEnum<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> fstEnum;
+
+ public SimpleTextTermsEnum(SimpleTextFieldsReader outerInstance,
+ FST<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> fst, FieldInfo.IndexOptions indexOptions)
+ {
+ this.outerInstance = outerInstance;
+ this.indexOptions = indexOptions;
+ fstEnum = new BytesRefFSTEnum<>(fst);
+ }
- @Override
- public BytesRef term() {
- return fstEnum.current().input;
- }
+ public override bool SeekExact(BytesRef text)
+ {
+
+ BytesRefFSTEnum.InputOutput<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> result =
+ fstEnum.SeekExact(text);
+ if (result != null)
+ {
+ PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>> pair1 = result.output;
+ PairOutputs.Pair<long?, long?> pair2 = pair1.output2;
+ docsStart = pair1.Output1;
+ docFreq_Renamed = (int) pair2.Output1;
+ totalTermFreq_Renamed = pair2.Output2;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
- @Override
- public long ord() {
- throw new UnsupportedOperationException();
- }
+ public override SeekStatus SeekCeil(BytesRef text)
+ {
+
+ BytesRefFSTEnum.InputOutput<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> result =
+ fstEnum.SeekCeil(text);
+ if (result == null)
+ {
+ //System.out.println(" end");
+ return SeekStatus.END;
+ }
+ else
+ {
+ //System.out.println(" got text=" + term.utf8ToString());
+ PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>> pair1 = result.output;
+ PairOutputs.Pair<long?, long?> pair2 = pair1.output2;
+ docsStart = pair1.output1;
+ docFreq_Renamed = (int) pair2.output1;
+ totalTermFreq_Renamed = pair2.output2;
+
+ if (result.input.Equals(text))
+ {
+ //System.out.println(" match docsStart=" + docsStart);
+ return SeekStatus.FOUND;
+ }
+ else
+ {
+ //System.out.println(" not match docsStart=" + docsStart);
+ return SeekStatus.NOT_FOUND;
+ }
+ }
+ }
+ public override BytesRef Next()
+ {
+ Debug.Assert(!ended);
+ BytesRefFSTEnum.InputOutput<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> result =
+ fstEnum.Next();
+ if (result != null)
+ {
+ PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>> pair1 = result.output;
+ PairOutputs.Pair<long?, long?> pair2 = pair1.output2;
+ docsStart = pair1.output1;
+ docFreq_Renamed = (int) pair2.output1;
+ totalTermFreq_Renamed = pair2.output2;
+ return result.input;
+ }
+ else
+ {
+ return null;
+ }
+ }
- @Override
- public void seekExact(long ord) {
- throw new UnsupportedOperationException();
- }
+ public override BytesRef Term()
+ {
+ return fstEnum.Current().Input;
+ }
- @Override
- public int docFreq() {
- return docFreq;
- }
+ public override long Ord()
+ {
+ throw new NotSupportedException();
+ }
- @Override
- public long totalTermFreq() {
- return indexOptions == IndexOptions.DOCS_ONLY ? -1 : totalTermFreq;
- }
-
- @Override
- public DocsEnum docs(Bits liveDocs, DocsEnum reuse, int flags) {
- SimpleTextDocsEnum docsEnum;
- if (reuse != null && reuse instanceof SimpleTextDocsEnum && ((SimpleTextDocsEnum) reuse).canReuse(SimpleTextFieldsReader.this.in)) {
- docsEnum = (SimpleTextDocsEnum) reuse;
- } else {
- docsEnum = new SimpleTextDocsEnum();
- }
- return docsEnum.reset(docsStart, liveDocs, indexOptions == IndexOptions.DOCS_ONLY, docFreq);
- }
+ public override void SeekExact(long ord)
+ {
+ throw new NotSupportedException();
+ }
- @Override
- public DocsAndPositionsEnum docsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, int flags) {
-
- if (indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
- // Positions were not indexed
- return null;
- }
-
- SimpleTextDocsAndPositionsEnum docsAndPositionsEnum;
- if (reuse != null && reuse instanceof SimpleTextDocsAndPositionsEnum && ((SimpleTextDocsAndPositionsEnum) reuse).canReuse(SimpleTextFieldsReader.this.in)) {
- docsAndPositionsEnum = (SimpleTextDocsAndPositionsEnum) reuse;
- } else {
- docsAndPositionsEnum = new SimpleTextDocsAndPositionsEnum();
- }
- return docsAndPositionsEnum.reset(docsStart, liveDocs, indexOptions, docFreq);
- }
-
- @Override
- public Comparator<BytesRef> getComparator() {
- return BytesRef.getUTF8SortedAsUnicodeComparator();
- }
- }
-
- private class SimpleTextDocsEnum extends DocsEnum {
- private final IndexInput inStart;
- private final IndexInput in;
- private bool omitTF;
- private int docID = -1;
- private int tf;
- private Bits liveDocs;
- private final BytesRef scratch = new BytesRef(10);
- private final CharsRef scratchUTF16 = new CharsRef(10);
- private int cost;
-
- public SimpleTextDocsEnum() {
- this.inStart = SimpleTextFieldsReader.this.in;
- this.in = this.inStart.clone();
- }
+ public override int DocFreq()
+ {
+ return docFreq_Renamed;
+ }
- public bool canReuse(IndexInput in) {
- return in == inStart;
- }
+ public override long TotalTermFreq()
+ {
+ return indexOptions == IndexOptions.DOCS_ONLY ? - 1 : totalTermFreq_Renamed;
+ }
- public SimpleTextDocsEnum reset(long fp, Bits liveDocs, bool omitTF, int docFreq) {
- this.liveDocs = liveDocs;
- in.seek(fp);
- this.omitTF = omitTF;
- docID = -1;
- tf = 1;
- cost = docFreq;
- return this;
- }
+ public override DocsEnum Docs(Bits liveDocs, DocsEnum reuse, int flags)
+ {
+ SimpleTextDocsEnum docsEnum;
+ if (reuse != null && reuse is SimpleTextDocsEnum &&
+ ((SimpleTextDocsEnum) reuse).CanReuse(outerInstance._input))
+ {
+ docsEnum = (SimpleTextDocsEnum) reuse;
+ }
+ else
+ {
+ docsEnum = new SimpleTextDocsEnum(outerInstance);
+ }
+ return docsEnum.Reset(docsStart, liveDocs, indexOptions == IndexOptions.DOCS_ONLY,
+ docFreq_Renamed);
+ }
- @Override
- public int docID() {
- return docID;
- }
+ public override DocsAndPositionsEnum DocsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, int flags)
+ {
+
+ if (indexOptions < IndexOptions.DOCS_AND_FREQS_AND_POSITIONS)
+ {
+ // Positions were not indexed
+ return null;
+ }
+
+ SimpleTextDocsAndPositionsEnum docsAndPositionsEnum;
+ if (reuse != null && reuse is SimpleTextDocsAndPositionsEnum &&
+ ((SimpleTextDocsAndPositionsEnum) reuse).canReuse(outerInstance._input))
+ {
+ docsAndPositionsEnum = (SimpleTextDocsAndPositionsEnum) reuse;
+ }
+ else
+ {
+ docsAndPositionsEnum = new SimpleTextDocsAndPositionsEnum(outerInstance);
+ }
+ return docsAndPositionsEnum.reset(docsStart, liveDocs, indexOptions, docFreq_Renamed);
+ }
- @Override
- public int freq() {
- return tf;
- }
+ public override IComparer<BytesRef> Comparator
+ {
+ get { return BytesRef.UTF8SortedAsUnicodeComparer; }
+ }
+ }
+
+ private class SimpleTextDocsEnum : DocsEnum
+ {
+ private readonly SimpleTextFieldsReader outerInstance;
+
+ internal readonly IndexInput inStart;
+ internal readonly IndexInput @in;
+ internal bool omitTF;
+ internal int docID_Renamed = -1;
+ internal int tf;
+ internal Bits liveDocs;
+ internal readonly BytesRef scratch = new BytesRef(10);
+ internal readonly CharsRef scratchUTF16 = new CharsRef(10);
+ internal int cost_Renamed;
+
+ public SimpleTextDocsEnum(SimpleTextFieldsReader outerInstance)
+ {
+ this.outerInstance = outerInstance;
+ inStart = outerInstance._input;
+ @in = (IndexInput) inStart.Clone();
+ }
+
+ public virtual bool CanReuse(IndexInput @in)
+ {
+ return @in == inStart;
+ }
+
+ public virtual SimpleTextDocsEnum Reset(long fp, Bits liveDocs, bool omitTF, int docFreq)
+ {
+ this.liveDocs = liveDocs;
+ @in.Seek(fp);
+ this.omitTF = omitTF;
+ docID_Renamed = -1;
+ tf = 1;
+ cost_Renamed = docFreq;
+ return this;
+ }
+
+ public override int DocID()
+ {
+ return docID_Renamed;
+ }
+
+ public override int Freq()
+ {
+ return tf;
+ }
+
+ public override int NextDoc()
+ {
+ if (docID_Renamed == NO_MORE_DOCS)
+ {
+ return docID_Renamed;
+ }
+ bool first = true;
+ int termFreq = 0;
+ while (true)
+ {
+ long lineStart = @in.FilePointer;
+ SimpleTextUtil.ReadLine(@in, scratch);
+ if (StringHelper.StartsWith(scratch, DOC))
+ {
+ if (!first && (liveDocs == null || liveDocs.Get(docID_Renamed)))
+ {
+ @in.Seek(lineStart);
+ if (!omitTF)
+ {
+ tf = termFreq;
+ }
+ return docID_Renamed;
+ }
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + DOC.length, scratch.Length - DOC.length,
+ scratchUTF16);
+ docID_Renamed = ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ termFreq = 0;
+ first = false;
+ }
+ else if (StringHelper.StartsWith(scratch, FREQ))
+ {
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + FREQ.length,
+ scratch.Length - FREQ.length, scratchUTF16);
+ termFreq = ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ }
+ else if (StringHelper.StartsWith(scratch, POS))
+ {
+ // skip termFreq++;
+ }
+ else if (StringHelper.StartsWith(scratch, START_OFFSET))
+ {
+ // skip
+ }
+ else if (StringHelper.StartsWith(scratch, END_OFFSET))
+ {
+ // skip
+ }
+ else if (StringHelper.StartsWith(scratch, PAYLOAD))
+ {
+ // skip
+ }
+ else
+ {
+ Debug.Assert(
+ StringHelper.StartsWith(scratch, TERM) || StringHelper.StartsWith(scratch, FIELD) ||
+ StringHelper.StartsWith(scratch, END), "scratch=" + scratch.Utf8ToString());
+ if (!first && (liveDocs == null || liveDocs.Get(docID_Renamed)))
+ {
+ @in.Seek(lineStart);
+ if (!omitTF)
+ {
+ tf = termFreq;
+ }
+ return docID_Renamed;
+ }
+ return docID_Renamed = NO_MORE_DOCS;
+ }
+ }
+ }
+
+ public override int Advance(int target)
+ {
+ // Naive -- better to index skip data
+ return SlowAdvance(target);
+ }
- @Override
- public int nextDoc() {
- if (docID == NO_MORE_DOCS) {
- return docID;
- }
- bool first = true;
- int termFreq = 0;
- while(true) {
- final long lineStart = in.getFilePointer();
- SimpleTextUtil.readLine(in, scratch);
- if (StringHelper.startsWith(scratch, DOC)) {
- if (!first && (liveDocs == null || liveDocs.get(docID))) {
- in.seek(lineStart);
- if (!omitTF) {
- tf = termFreq;
- }
- return docID;
- }
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+DOC.length, scratch.length-DOC.length, scratchUTF16);
- docID = ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- termFreq = 0;
- first = false;
- } else if (StringHelper.startsWith(scratch, FREQ)) {
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+FREQ.length, scratch.length-FREQ.length, scratchUTF16);
- termFreq = ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- } else if (StringHelper.startsWith(scratch, POS)) {
- // skip termFreq++;
- } else if (StringHelper.startsWith(scratch, START_OFFSET)) {
- // skip
- } else if (StringHelper.startsWith(scratch, END_OFFSET)) {
- // skip
- } else if (StringHelper.startsWith(scratch, PAYLOAD)) {
- // skip
- } else {
- Debug.Assert( StringHelper.startsWith(scratch, TERM) || StringHelper.startsWith(scratch, FIELD) || StringHelper.startsWith(scratch, END): "scratch=" + scratch.utf8ToString();
- if (!first && (liveDocs == null || liveDocs.get(docID))) {
- in.seek(lineStart);
- if (!omitTF) {
- tf = termFreq;
- }
- return docID;
- }
- return docID = NO_MORE_DOCS;
+ public override long Cost()
+ {
+ return cost_Renamed;
+ }
}
- }
- }
- @Override
- public int advance(int target) {
- // Naive -- better to index skip data
- return slowAdvance(target);
- }
-
- @Override
- public long cost() {
- return cost;
- }
- }
-
- private class SimpleTextDocsAndPositionsEnum extends DocsAndPositionsEnum {
- private final IndexInput inStart;
- private final IndexInput in;
- private int docID = -1;
- private int tf;
- private Bits liveDocs;
- private final BytesRef scratch = new BytesRef(10);
- private final BytesRef scratch2 = new BytesRef(10);
- private final CharsRef scratchUTF16 = new CharsRef(10);
- private final CharsRef scratchUTF16_2 = new CharsRef(10);
- private BytesRef payload;
- private long nextDocStart;
- private bool readOffsets;
- private bool readPositions;
- private int startOffset;
- private int endOffset;
- private int cost;
-
- public SimpleTextDocsAndPositionsEnum() {
- this.inStart = SimpleTextFieldsReader.this.in;
- this.in = inStart.clone();
- }
+ private class SimpleTextDocsAndPositionsEnum : DocsAndPositionsEnum
+ {
+ private readonly SimpleTextFieldsReader outerInstance;
+
+ internal readonly IndexInput inStart;
+ internal readonly IndexInput @in;
+ internal int docID_Renamed = -1;
+ internal int tf;
+ internal Bits liveDocs;
+ internal readonly BytesRef scratch = new BytesRef(10);
+ internal readonly BytesRef scratch2 = new BytesRef(10);
+ internal readonly CharsRef scratchUTF16 = new CharsRef(10);
+ internal readonly CharsRef scratchUTF16_2 = new CharsRef(10);
+ internal BytesRef payload;
+ internal long nextDocStart;
+ internal bool readOffsets;
+ internal bool readPositions;
+ internal int startOffset_Renamed;
+ internal int endOffset_Renamed;
+ internal int cost_Renamed;
+
+ public SimpleTextDocsAndPositionsEnum(SimpleTextFieldsReader outerInstance)
+ {
+ this.outerInstance = outerInstance;
+ this.inStart = outerInstance._input;
+ this.@in = (IndexInput) inStart.Clone();
+ }
- public bool canReuse(IndexInput in) {
- return in == inStart;
- }
+ public virtual bool canReuse(IndexInput @in)
+ {
+ return @in == inStart;
+ }
- public SimpleTextDocsAndPositionsEnum reset(long fp, Bits liveDocs, IndexOptions indexOptions, int docFreq) {
- this.liveDocs = liveDocs;
- nextDocStart = fp;
- docID = -1;
- readPositions = indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0;
- readOffsets = indexOptions.compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0;
- if (!readOffsets) {
- startOffset = -1;
- endOffset = -1;
- }
- cost = docFreq;
- return this;
- }
+ public virtual SimpleTextDocsAndPositionsEnum reset(long fp, Bits liveDocs,
+ FieldInfo.IndexOptions indexOptions, int docFreq)
+ {
+ this.liveDocs = liveDocs;
+ nextDocStart = fp;
+ docID_Renamed = -1;
+ readPositions = indexOptions >= IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
+ readOffsets = indexOptions >= IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS;
+
+ if (!readOffsets)
+ {
+ startOffset_Renamed = -1;
+ endOffset_Renamed = -1;
+ }
+ cost_Renamed = docFreq;
+ return this;
+ }
- @Override
- public int docID() {
- return docID;
- }
+ public override int DocID()
+ {
+ return docID_Renamed;
+ }
- @Override
- public int freq() {
- return tf;
- }
+ public override int Freq()
+ {
+ return tf;
+ }
+
+ public override int NextDoc()
+ {
+ bool first = true;
+ @in.Seek(nextDocStart);
+ long posStart = 0;
+ while (true)
+ {
+ long lineStart = @in.FilePointer;
+ SimpleTextUtil.ReadLine(@in, scratch);
+ //System.out.println("NEXT DOC: " + scratch.utf8ToString());
+ if (StringHelper.StartsWith(scratch, DOC))
+ {
+ if (!first && (liveDocs == null || liveDocs.Get(docID_Renamed)))
+ {
+ nextDocStart = lineStart;
+ @in.Seek(posStart);
+ return docID_Renamed;
+ }
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + DOC.length, scratch.Length - DOC.length,
+ scratchUTF16);
+ docID_Renamed = ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ tf = 0;
+ first = false;
+ }
+ else if (StringHelper.StartsWith(scratch, FREQ))
+ {
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + FREQ.length,
+ scratch.Length - FREQ.length, scratchUTF16);
+ tf = ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ posStart = @in.FilePointer;
+ }
+ else if (StringHelper.StartsWith(scratch, POS))
+ {
+ // skip
+ }
+ else if (StringHelper.StartsWith(scratch, START_OFFSET))
+ {
+ // skip
+ }
+ else if (StringHelper.StartsWith(scratch, END_OFFSET))
+ {
+ // skip
+ }
+ else if (StringHelper.StartsWith(scratch, PAYLOAD))
+ {
+ // skip
+ }
+ else
+ {
+ Debug.Assert(StringHelper.StartsWith(scratch, TERM) || StringHelper.StartsWith(scratch, FIELD) ||
+ StringHelper.StartsWith(scratch, END));
+
+ if (!first && (liveDocs == null || liveDocs.Get(docID_Renamed)))
+ {
+ nextDocStart = lineStart;
+ @in.Seek(posStart);
+ return docID_Renamed;
+ }
+ return docID_Renamed = NO_MORE_DOCS;
+ }
+ }
+ }
+
+ public override int Advance(int target)
+ {
+ // Naive -- better to index skip data
+ return SlowAdvance(target);
+ }
+
+ public override int NextPosition()
+ {
+ int pos;
+ if (readPositions)
+ {
+ SimpleTextUtil.ReadLine(@in, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, POS), "got line=" + scratch.Utf8ToString());
+ UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.Offset + POS.length, scratch.Length - POS.length,
+ scratchUTF16_2);
+ pos = ArrayUtil.ParseInt(scratchUTF16_2.Chars, 0, scratchUTF16_2.length);
+ }
+ else
+ {
+ pos = -1;
+ }
+
+ if (readOffsets)
+ {
+ SimpleTextUtil.ReadLine(@in, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, START_OFFSET), "got line=" + scratch.Utf8ToString());
+ UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.Offset + START_OFFSET.length,
+ scratch.Length - START_OFFSET.length, scratchUTF16_2);
+ startOffset_Renamed = ArrayUtil.ParseInt(scratchUTF16_2.chars, 0, scratchUTF16_2.length);
+ SimpleTextUtil.ReadLine(@in, scratch);
+ Debug.Assert(StringHelper.StartsWith(scratch, END_OFFSET), "got line=" + scratch.Utf8ToString());
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + END_OFFSET.length,
+ scratch.Length - END_OFFSET.length, scratchUTF16_2);
+ endOffset_Renamed = ArrayUtil.ParseInt(scratchUTF16_2.Chars, 0, scratchUTF16_2.length);
+ }
+
+ long fp = @in.FilePointer;
+ SimpleTextUtil.ReadLine(@in, scratch);
+ if (StringHelper.StartsWith(scratch, PAYLOAD))
+ {
+ int len = scratch.Length - PAYLOAD.length;
+ if (scratch2.Bytes.Length < len)
+ {
+ scratch2.Grow(len);
+ }
+ Array.Copy(scratch.Bytes, PAYLOAD.length, scratch2.Bytes, 0, len);
+ scratch2.Length = len;
+ payload = scratch2;
+ }
+ else
+ {
+ payload = null;
+ @in.Seek(fp);
+ }
+ return pos;
+ }
+
+ public override int StartOffset()
+ {
+ return startOffset_Renamed;
+ }
+
+ public override int EndOffset()
+ {
+ return endOffset_Renamed;
+ }
+
+ public override BytesRef Payload
+ {
+ get { return payload; }
+ }
- @Override
- public int nextDoc() {
- bool first = true;
- in.seek(nextDocStart);
- long posStart = 0;
- while(true) {
- final long lineStart = in.getFilePointer();
- SimpleTextUtil.readLine(in, scratch);
- //System.out.println("NEXT DOC: " + scratch.utf8ToString());
- if (StringHelper.startsWith(scratch, DOC)) {
- if (!first && (liveDocs == null || liveDocs.get(docID))) {
- nextDocStart = lineStart;
- in.seek(posStart);
- return docID;
- }
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+DOC.length, scratch.length-DOC.length, scratchUTF16);
- docID = ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- tf = 0;
- first = false;
- } else if (StringHelper.startsWith(scratch, FREQ)) {
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+FREQ.length, scratch.length-FREQ.length, scratchUTF16);
- tf = ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- posStart = in.getFilePointer();
- } else if (StringHelper.startsWith(scratch, POS)) {
- // skip
- } else if (StringHelper.startsWith(scratch, START_OFFSET)) {
- // skip
- } else if (StringHelper.startsWith(scratch, END_OFFSET)) {
- // skip
- } else if (StringHelper.startsWith(scratch, PAYLOAD)) {
- // skip
- } else {
- Debug.Assert( StringHelper.startsWith(scratch, TERM) || StringHelper.startsWith(scratch, FIELD) || StringHelper.startsWith(scratch, END);
- if (!first && (liveDocs == null || liveDocs.get(docID))) {
- nextDocStart = lineStart;
- in.seek(posStart);
- return docID;
- }
- return docID = NO_MORE_DOCS;
+ public override long Cost()
+ {
+ return cost_Renamed;
+ }
}
- }
- }
- @Override
- public int advance(int target) {
- // Naive -- better to index skip data
- return slowAdvance(target);
- }
+ internal class TermData
+ {
+ public long DocsStart { get; set; }
+ public int DocFreq { get; set; }
- @Override
- public int nextPosition() {
- final int pos;
- if (readPositions) {
- SimpleTextUtil.readLine(in, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, POS): "got line=" + scratch.utf8ToString();
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+POS.length, scratch.length-POS.length, scratchUTF16_2);
- pos = ArrayUtil.parseInt(scratchUTF16_2.chars, 0, scratchUTF16_2.length);
- } else {
- pos = -1;
- }
-
- if (readOffsets) {
- SimpleTextUtil.readLine(in, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, START_OFFSET): "got line=" + scratch.utf8ToString();
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+START_OFFSET.length, scratch.length-START_OFFSET.length, scratchUTF16_2);
- startOffset = ArrayUtil.parseInt(scratchUTF16_2.chars, 0, scratchUTF16_2.length);
- SimpleTextUtil.readLine(in, scratch);
- Debug.Assert( StringHelper.startsWith(scratch, END_OFFSET): "got line=" + scratch.utf8ToString();
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+END_OFFSET.length, scratch.length-END_OFFSET.length, scratchUTF16_2);
- endOffset = ArrayUtil.parseInt(scratchUTF16_2.chars, 0, scratchUTF16_2.length);
- }
-
- final long fp = in.getFilePointer();
- SimpleTextUtil.readLine(in, scratch);
- if (StringHelper.startsWith(scratch, PAYLOAD)) {
- final int len = scratch.length - PAYLOAD.length;
- if (scratch2.bytes.length < len) {
- scratch2.grow(len);
+ public TermData(long docsStart, int docFreq)
+ {
+ DocsStart = docsStart;
+ DocFreq = docFreq;
+ }
}
- System.arraycopy(scratch.bytes, PAYLOAD.length, scratch2.bytes, 0, len);
- scratch2.length = len;
- payload = scratch2;
- } else {
- payload = null;
- in.seek(fp);
- }
- return pos;
- }
- @Override
- public int startOffset() {
- return startOffset;
- }
+ private class SimpleTextTerms : Terms
+ {
+ private readonly SimpleTextFieldsReader outerInstance;
+
+ internal readonly long termsStart;
+ internal readonly FieldInfo fieldInfo;
+ internal readonly int maxDoc;
+ internal long sumTotalTermFreq;
+ internal long sumDocFreq;
+ internal int docCount;
+ internal FST<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> fst;
+ internal int termCount;
+ internal readonly BytesRef scratch = new BytesRef(10);
+ internal readonly CharsRef scratchUTF16 = new CharsRef(10);
+
+ public SimpleTextTerms(SimpleTextFieldsReader outerInstance, string field, long termsStart, int maxDoc)
+ {
+ this.outerInstance = outerInstance;
+ this.maxDoc = maxDoc;
+ this.termsStart = termsStart;
+ fieldInfo = outerInstance.fieldInfos.FieldInfo(field);
+ LoadTerms();
+ }
- @Override
- public int endOffset() {
- return endOffset;
- }
+ internal virtual void LoadTerms()
+ {
+ PositiveIntOutputs posIntOutputs = PositiveIntOutputs.Singleton;
+ Builder<PairOutputs.Pair<long?, PairOutputs.Pair<long?, long?>>> b;
+ PairOutputs<long?, long?> outputsInner = new PairOutputs<long?, long?>(posIntOutputs, posIntOutputs);
+ PairOutputs<long?, PairOutputs.Pair<long?, long?>> outputs =
+ new PairOutputs<long?, PairOutputs.Pair<long?, long?>>(posIntOutputs, outputsInner);
+ b = new Builder<>(FST.INPUT_TYPE.BYTE1, outputs);
+ IndexInput @in = (IndexInput) outerInstance._input.Clone();
+ @in.Seek(termsStart);
+
+ BytesRef lastTerm = new BytesRef(10);
+ long lastDocsStart = -1;
+ int docFreq = 0;
+ long totalTermFreq = 0;
+ FixedBitSet visitedDocs = new FixedBitSet(maxDoc);
+
+ IntsRef scratchIntsRef = new IntsRef();
+ while (true)
+ {
+ SimpleTextUtil.ReadLine(@in, scratch);
+ if (scratch.Equals(END) || StringHelper.StartsWith(scratch, FIELD))
+ {
+ if (lastDocsStart != -1)
+ {
+ b.Add(Util.ToIntsRef(lastTerm, scratchIntsRef),
+ outputs.NewPair(lastDocsStart, outputsInner.NewPair((long) docFreq, totalTermFreq)));
+ sumTotalTermFreq += totalTermFreq;
+ }
+ break;
+ }
+ else if (StringHelper.StartsWith(scratch, DOC))
+ {
+ docFreq++;
+ sumDocFreq++;
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + DOC.length, scratch.Length - DOC.length,
+ scratchUTF16);
+ int docID = ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ visitedDocs.Set(docID);
+ }
+ else if (StringHelper.StartsWith(scratch, FREQ))
+ {
+ UnicodeUtil.UTF8toUTF16(scratch.Bytes, scratch.Offset + FREQ.length,
+ scratch.Length - FREQ.length, scratchUTF16);
+ totalTermFreq += ArrayUtil.ParseInt(scratchUTF16.Chars, 0, scratchUTF16.length);
+ }
+ else if (StringHelper.StartsWith(scratch, TERM))
+ {
+ if (lastDocsStart != -1)
+ {
+ b.Add(Util.ToIntsRef(lastTerm, scratchIntsRef),
+ outputs.NewPair(lastDocsStart, outputsInner.NewPair((long) docFreq, totalTermFreq)));
+ }
+ lastDocsStart = @in.FilePointer;
+ int len = scratch.Length - TERM.length;
+ if (len > lastTerm.Length)
+ {
+ lastTerm.Grow(len);
+ }
+ Array.Copy(scratch.Bytes, TERM.length, lastTerm.Bytes, 0, len);
+ lastTerm.Length = len;
+ docFreq = 0;
+ sumTotalTermFreq += totalTermFreq;
+ totalTermFreq = 0;
+ termCount++;
+ }
+ }
+ docCount = visitedDocs.Cardinality();
+ fst = b.Finish();
+
+ }
- @Override
- public BytesRef getPayload() {
- return payload;
- }
-
- @Override
- public long cost() {
- return cost;
- }
- }
+ /// <summary>Returns approximate RAM bytes used</summary>
+ public virtual long RamBytesUsed()
+ {
+ return (fst != null) ? fst.SizeInBytes : 0;
+ }
- static class TermData {
- public long docsStart;
- public int docFreq;
+ public override TermsEnum Iterator(TermsEnum reuse)
+ {
+ return fst != null ? new SimpleTextTermsEnum(outerInstance, fst, fieldInfo.FieldIndexOptions.Value) : TermsEnum.EMPTY;
+ }
- public TermData(long docsStart, int docFreq) {
- this.docsStart = docsStart;
- this.docFreq = docFreq;
- }
- }
-
- private class SimpleTextTerms extends Terms {
- private final long termsStart;
- private final FieldInfo fieldInfo;
- private final int maxDoc;
- private long sumTotalTermFreq;
- private long sumDocFreq;
- private int docCount;
- private FST<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> fst;
- private int termCount;
- private final BytesRef scratch = new BytesRef(10);
- private final CharsRef scratchUTF16 = new CharsRef(10);
-
- public SimpleTextTerms(String field, long termsStart, int maxDoc) {
- this.maxDoc = maxDoc;
- this.termsStart = termsStart;
- fieldInfo = fieldInfos.fieldInfo(field);
- loadTerms();
- }
+ public override IComparer<BytesRef> Comparator
+ {
+ get { return BytesRef.UTF8SortedAsUnicodeComparer; }
+ }
- private void loadTerms() {
- PositiveIntOutputs posIntOutputs = PositiveIntOutputs.getSingleton();
- final Builder<PairOutputs.Pair<Long,PairOutputs.Pair<Long,Long>>> b;
- final PairOutputs<Long,Long> outputsInner = new PairOutputs<>(posIntOutputs, posIntOutputs);
- final PairOutputs<Long,PairOutputs.Pair<Long,Long>> outputs = new PairOutputs<>(posIntOutputs,
- outputsInner);
- b = new Builder<>(FST.INPUT_TYPE.BYTE1, outputs);
- IndexInput in = SimpleTextFieldsReader.this.in.clone();
- in.seek(termsStart);
- final BytesRef lastTerm = new BytesRef(10);
- long lastDocsStart = -1;
- int docFreq = 0;
- long totalTermFreq = 0;
- FixedBitSet visitedDocs = new FixedBitSet(maxDoc);
- final IntsRef scratchIntsRef = new IntsRef();
- while(true) {
- SimpleTextUtil.readLine(in, scratch);
- if (scratch.equals(END) || StringHelper.startsWith(scratch, FIELD)) {
- if (lastDocsStart != -1) {
- b.add(Util.toIntsRef(lastTerm, scratchIntsRef),
- outputs.newPair(lastDocsStart,
- outputsInner.newPair((long) docFreq, totalTermFreq)));
- sumTotalTermFreq += totalTermFreq;
- }
- break;
- } else if (StringHelper.startsWith(scratch, DOC)) {
- docFreq++;
- sumDocFreq++;
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+DOC.length, scratch.length-DOC.length, scratchUTF16);
- int docID = ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- visitedDocs.set(docID);
- } else if (StringHelper.startsWith(scratch, FREQ)) {
- UnicodeUtil.UTF8toUTF16(scratch.bytes, scratch.offset+FREQ.length, scratch.length-FREQ.length, scratchUTF16);
- totalTermFreq += ArrayUtil.parseInt(scratchUTF16.chars, 0, scratchUTF16.length);
- } else if (StringHelper.startsWith(scratch, TERM)) {
- if (lastDocsStart != -1) {
- b.add(Util.toIntsRef(lastTerm, scratchIntsRef), outputs.newPair(lastDocsStart,
- outputsInner.newPair((long) docFreq, totalTermFreq)));
- }
- lastDocsStart = in.getFilePointer();
- final int len = scratch.length - TERM.length;
- if (len > lastTerm.length) {
- lastTerm.grow(len);
- }
- System.arraycopy(scratch.bytes, TERM.length, lastTerm.bytes, 0, len);
- lastTerm.length = len;
- docFreq = 0;
- sumTotalTermFreq += totalTermFreq;
- totalTermFreq = 0;
- termCount++;
- }
- }
- docCount = visitedDocs.cardinality();
- fst = b.finish();
- /*
- PrintStream ps = new PrintStream("out.dot");
- fst.toDot(ps);
- ps.close();
- System.out.println("SAVED out.dot");
- */
- //System.out.println("FST " + fst.sizeInBytes());
- }
-
- /** Returns approximate RAM bytes used */
- public long ramBytesUsed() {
- return (fst!=null) ? fst.sizeInBytes() : 0;
- }
+ public override long Size()
+ {
+ return termCount;
+ }
- @Override
- public TermsEnum iterator(TermsEnum reuse) {
- if (fst != null) {
- return new SimpleTextTermsEnum(fst, fieldInfo.getIndexOptions());
- } else {
- return TermsEnum.EMPTY;
- }
- }
+ public override long SumTotalTermFreq
+ {
+ get { return fieldInfo.FieldIndexOptions == IndexOptions.DOCS_ONLY ? - 1 : sumTotalTermFreq; }
+ }
- @Override
- public Comparator<BytesRef> getComparator() {
- return BytesRef.getUTF8SortedAsUnicodeComparator();
- }
+ public override long SumDocFreq
+ {
+ get { return sumDocFreq; }
+ }
- @Override
- public long size() {
- return (long) termCount;
- }
+ public override int DocCount
+ {
+ get { return docCount; }
+ }
- @Override
- public long getSumTotalTermFreq() {
- return fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY ? -1 : sumTotalTermFreq;
- }
+ public override bool HasFreqs()
+ {
+ return fieldInfo.FieldIndexOptions >= IndexOptions.DOCS_AND_FREQS;
+ }
- @Override
- public long getSumDocFreq() {
- return sumDocFreq;
- }
+ public override bool HasOffsets()
+ {
+ return
+ fieldInfo.FieldIndexOptions >= IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS;
+ }
- @Override
- public int getDocCount() {
- return docCount;
- }
+ public override bool HasPositions()
+ {
+ return fieldInfo.FieldIndexOptions >= IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
+ }
- @Override
- public bool hasFreqs() {
- return fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS) >= 0;
- }
+ public override bool HasPayloads()
+ {
+ return fieldInfo.HasPayloads();
+ }
+ }
- @Override
- public bool hasOffsets() {
- return fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0;
- }
+ public override IEnumerator<string> Iterator()
+ {
+ }
- @Override
- public bool hasPositions() {
- return fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0;
- }
-
- @Override
- public bool hasPayloads() {
- return fieldInfo.hasPayloads();
- }
- }
-
- @Override
- public Iterator<String> iterator() {
- return Collections.unmodifiableSet(fields.keySet()).iterator();
- }
-
- private final Map<String,SimpleTextTerms> termsCache = new HashMap<>();
-
- @Override
- synchronized public Terms terms(String field) {
- Terms terms = termsCache.get(field);
- if (terms == null) {
- Long fp = fields.get(field);
- if (fp == null) {
- return null;
- } else {
- terms = new SimpleTextTerms(field, fp, maxDoc);
- termsCache.put(field, (SimpleTextTerms) terms);
- }
- }
- return terms;
- }
-
- @Override
- public int size() {
- return -1;
- }
-
- @Override
- public void close() {
- in.close();
- }
-
- @Override
- public long ramBytesUsed() {
- long sizeInBytes = 0;
- for(SimpleTextTerms simpleTextTerms : termsCache.values()) {
- sizeInBytes += (simpleTextTerms!=null) ? simpleTextTerms.ramBytesUsed() : 0;
+ public override Terms Terms(string field)
+ {
+ lock (this)
+ {
+ Terms terms = _termsCache[field];
+ if (terms == null)
+ {
+ long? fp = fields[field];
+ if (fp == null)
+ {
+ return null;
+ }
+ else
+ {
+ terms = new SimpleTextTerms(this, field, fp.Value, maxDoc);
+ _termsCache[field] = (SimpleTextTerms) terms;
+ }
+ }
+ return terms;
+ }
+ }
+
+ public override int Size()
+ {
+ return -1;
+ }
+
+ public override void Dispose()
+ {
+ _input.Dispose();
+ }
+
+ public override long RamBytesUsed()
+ {
+ return _termsCache.Values.Sum(simpleTextTerms => (simpleTextTerms != null) ? simpleTextTerms.RamBytesUsed() : 0);
+ }
+
+ public override void CheckIntegrity()
+ {
+ }
}
- return sizeInBytes;
- }
- @Override
- public void checkIntegrity() {}
-}
+}
\ No newline at end of file