Example #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: private void addPositions(final org.apache.lucene.index.DocsAndPositionsEnum in, final org.apache.lucene.store.IndexOutput out) throws java.io.IOException
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
            internal virtual void addPositions(DocsAndPositionsEnum @in, IndexOutput @out)
            {
                int freq = @in.freq();

                @out.writeVInt(freq);
                int previousPosition  = 0;
                int previousEndOffset = 0;

                for (int i = 0; i < freq; i++)
                {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int pos = in.nextPosition();
                    int pos = @in.nextPosition();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.apache.lucene.util.BytesRef payload = in.getPayload();
                    BytesRef payload = @in.Payload;
                    // The low-order bit of token is set only if there is a payload, the
                    // previous bits are the delta-encoded position.
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int token = (pos - previousPosition) << 1 | (payload == null ? 0 : 1);
                    int token = (pos - previousPosition) << 1 | (payload == null ? 0 : 1);
                    @out.writeVInt(token);
                    previousPosition = pos;
                    if (storeOffsets)     // don't encode offsets if they are not stored
                    {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int startOffset = in.startOffset();
                        int startOffset = @in.startOffset();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int endOffset = in.endOffset();
                        int endOffset = @in.endOffset();
                        @out.writeVInt(startOffset - previousEndOffset);
                        @out.writeVInt(endOffset - startOffset);
                        previousEndOffset = endOffset;
                    }
                    if (payload != null)
                    {
                        @out.writeVInt(payload.length);
                        @out.writeBytes(payload.bytes, payload.offset, payload.length);
                    }
                }
            }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void addBinaryField(index.FieldInfo field, Iterable<util.BytesRef> values) throws java.io.IOException
        public override void addBinaryField(FieldInfo field, IEnumerable <BytesRef> values)
        {
            Debug.Assert(fieldSeen(field.name));
            Debug.Assert(field.DocValuesType == FieldInfo.DocValuesType.BINARY);
            int maxLength = 0;

            foreach (BytesRef value in values)
            {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int length = value == null ? 0 : value.length;
                int length = value == null ? 0 : value.length;
                maxLength = Math.Max(maxLength, length);
            }
            writeFieldEntry(field, FieldInfo.DocValuesType.BINARY);

            // write maxLength
            SimpleTextUtil.write(data, MAXLENGTH);
            SimpleTextUtil.write(data, Convert.ToString(maxLength), scratch);
            SimpleTextUtil.WriteNewline(data);

            int           maxBytesLength = Convert.ToString(maxLength).Length;
            StringBuilder sb             = new StringBuilder();

            for (int i = 0; i < maxBytesLength; i++)
            {
                sb.Append('0');
            }
            // write our pattern for encoding lengths
            SimpleTextUtil.write(data, PATTERN);
            SimpleTextUtil.write(data, sb.ToString(), scratch);
            SimpleTextUtil.WriteNewline(data);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.text.DecimalFormat encoder = new java.text.DecimalFormat(sb.toString(), new java.text.DecimalFormatSymbols(java.util.Locale.ROOT));
            DecimalFormat encoder = new DecimalFormat(sb.ToString(), new DecimalFormatSymbols(Locale.ROOT));

            int numDocsWritten = 0;

            foreach (BytesRef value in values)
            {
                // write length
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final int length = value == null ? 0 : value.length;
                int length = value == null ? 0 : value.length;
                SimpleTextUtil.write(data, LENGTH);
                SimpleTextUtil.write(data, encoder.format(length), scratch);
                SimpleTextUtil.WriteNewline(data);

                // write bytes -- don't use SimpleText.write
                // because it escapes:
                if (value != null)
                {
                    data.writeBytes(value.bytes, value.offset, value.length);
                }

                // pad to fit
                for (int i = length; i < maxLength; i++)
                {
                    data.writeByte((sbyte)' ');
                }
                SimpleTextUtil.WriteNewline(data);
                if (value == null)
                {
                    SimpleTextUtil.write(data, "F", scratch);
                }
                else
                {
                    SimpleTextUtil.write(data, "T", scratch);
                }
                SimpleTextUtil.WriteNewline(data);
                numDocsWritten++;
            }

            Debug.Assert(numDocs == numDocsWritten);
        }
Example #3
0
 public override void writeBytes(byte[] b, int length)
 {
     _indexOutput.writeBytes(b, length);
 }