public override DocsAndPositionsEnum DocsAndPositions(Bits liveDocs, DocsAndPositionsEnum reuse, int flags) { SimpleTVPostings postings = _current.Value; if (postings.POSITIONS == null && postings.START_OFFSETS == null) { return(null); } // TODO: reuse var e = new SimpleTVDocsAndPositionsEnum(); e.Reset(liveDocs, postings.POSITIONS, postings.START_OFFSETS, postings.END_OFFSETS, postings.PAYLOADS); return(e); }
public override Fields Get(int doc) { // LUCENENET specific: Use StringComparer.Ordinal to get the same ordering as Java var fields = new JCG.SortedDictionary <string, SimpleTVTerms>(StringComparer.Ordinal); _input.Seek(_offsets[doc]); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.NUMFIELDS)); } var numFields = ParseInt32At(SimpleTextTermVectorsWriter.NUMFIELDS.Length); if (numFields == 0) { return(null); // no vectors for this doc } for (var i = 0; i < numFields; i++) { ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELD)); } // skip fieldNumber: ParseInt32At(SimpleTextTermVectorsWriter.FIELD.Length); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDNAME)); } var fieldName = ReadString(SimpleTextTermVectorsWriter.FIELDNAME.Length, _scratch); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPOSITIONS)); } var positions = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPOSITIONS.Length, _scratch), CultureInfo.InvariantCulture); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDOFFSETS)); } var offsets = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDOFFSETS.Length, _scratch), CultureInfo.InvariantCulture); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPAYLOADS)); } var payloads = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPAYLOADS.Length, _scratch), CultureInfo.InvariantCulture); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDTERMCOUNT)); } var termCount = ParseInt32At(SimpleTextTermVectorsWriter.FIELDTERMCOUNT.Length); var terms = new SimpleTVTerms(offsets, positions, payloads); fields.Add(fieldName, terms); for (var j = 0; j < termCount; j++) { ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMTEXT)); } var term = new BytesRef(); var termLength = _scratch.Length - SimpleTextTermVectorsWriter.TERMTEXT.Length; term.Grow(termLength); term.Length = termLength; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.TERMTEXT.Length, term.Bytes, term.Offset, termLength); var postings = new SimpleTVPostings(); terms.terms.Add(term, postings); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMFREQ)); } postings.freq = ParseInt32At(SimpleTextTermVectorsWriter.TERMFREQ.Length); if (!positions && !offsets) { continue; } if (positions) { postings.positions = new int[postings.freq]; if (payloads) { postings.payloads = new BytesRef[postings.freq]; } } if (offsets) { postings.startOffsets = new int[postings.freq]; postings.endOffsets = new int[postings.freq]; } for (var k = 0; k < postings.freq; k++) { if (positions) { ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.POSITION)); } postings.positions[k] = ParseInt32At(SimpleTextTermVectorsWriter.POSITION.Length); if (payloads) { ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.PAYLOAD)); } if (_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length == 0) { postings.payloads[k] = null; } else { var payloadBytes = new byte[_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length]; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.PAYLOAD.Length, payloadBytes, 0, payloadBytes.Length); postings.payloads[k] = new BytesRef(payloadBytes); } } } if (!offsets) { continue; } ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.STARTOFFSET)); } postings.startOffsets[k] = ParseInt32At(SimpleTextTermVectorsWriter.STARTOFFSET.Length); ReadLine(); if (Debugging.AssertsEnabled) { Debugging.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.ENDOFFSET)); } postings.endOffsets[k] = ParseInt32At(SimpleTextTermVectorsWriter.ENDOFFSET.Length); } } } return(new SimpleTVFields(this, fields)); }
public override Fields Get(int doc) { var fields = new SortedDictionary<string, SimpleTVTerms>(); _input.Seek(_offsets[doc]); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.NUMFIELDS)); var numFields = ParseIntAt(SimpleTextTermVectorsWriter.NUMFIELDS.Length); if (numFields == 0) { return null; // no vectors for this doc } for (var i = 0; i < numFields; i++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELD)); // skip fieldNumber: ParseIntAt(SimpleTextTermVectorsWriter.FIELD.Length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDNAME)); var fieldName = ReadString(SimpleTextTermVectorsWriter.FIELDNAME.Length, _scratch); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPOSITIONS)); var positions = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPOSITIONS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDOFFSETS)); var offsets = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDOFFSETS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPAYLOADS)); var payloads = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPAYLOADS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDTERMCOUNT)); var termCount = ParseIntAt(SimpleTextTermVectorsWriter.FIELDTERMCOUNT.Length); var terms = new SimpleTVTerms(offsets, positions, payloads); fields.Add(fieldName, terms); for (var j = 0; j < termCount; j++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMTEXT)); var term = new BytesRef(); var termLength = _scratch.Length - SimpleTextTermVectorsWriter.TERMTEXT.Length; term.Grow(termLength); term.Length = termLength; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.TERMTEXT.Length, term.Bytes, term.Offset, termLength); var postings = new SimpleTVPostings(); terms.TERMS.Add(term, postings); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMFREQ)); postings.FREQ = ParseIntAt(SimpleTextTermVectorsWriter.TERMFREQ.Length); if (!positions && !offsets) continue; if (positions) { postings.POSITIONS = new int[postings.FREQ]; if (payloads) { postings.PAYLOADS = new BytesRef[postings.FREQ]; } } if (offsets) { postings.START_OFFSETS = new int[postings.FREQ]; postings.END_OFFSETS = new int[postings.FREQ]; } for (var k = 0; k < postings.FREQ; k++) { if (positions) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.POSITION)); postings.POSITIONS[k] = ParseIntAt(SimpleTextTermVectorsWriter.POSITION.Length); if (payloads) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.PAYLOAD)); if (_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length == 0) { postings.PAYLOADS[k] = null; } else { var payloadBytes = new byte[_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length]; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.PAYLOAD.Length, payloadBytes, 0, payloadBytes.Length); postings.PAYLOADS[k] = new BytesRef(payloadBytes); } } } if (!offsets) continue; ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.STARTOFFSET)); postings.START_OFFSETS[k] = ParseIntAt(SimpleTextTermVectorsWriter.STARTOFFSET.Length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.ENDOFFSET)); postings.END_OFFSETS[k] = ParseIntAt(SimpleTextTermVectorsWriter.ENDOFFSET.Length); } } } return new SimpleTVFields(this, fields); }
public override Fields Get(int doc) { SortedMap <string, SimpleTVTerms> fields = new SortedDictionary <string, SimpleTVTerms>(); _input.Seek(_offsets[doc]); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, NUMFIELDS)); int numFields = ParseIntAt(NUMFIELDS.length); if (numFields == 0) { return(null); // no vectors for this doc } for (int i = 0; i < numFields; i++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELD)); // skip fieldNumber: ParseIntAt(FIELD.length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELDNAME)); string fieldName = ReadString(FIELDNAME.length, _scratch); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELDPOSITIONS)); bool positions = Convert.ToBoolean(ReadString(FIELDPOSITIONS.length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELDOFFSETS)); bool offsets = Convert.ToBoolean(ReadString(FIELDOFFSETS.length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELDPAYLOADS)); bool payloads = Convert.ToBoolean(ReadString(FIELDPAYLOADS.length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, FIELDTERMCOUNT)); int termCount = ParseIntAt(FIELDTERMCOUNT.length); SimpleTVTerms terms = new SimpleTVTerms(offsets, positions, payloads); fields.put(fieldName, terms); for (int j = 0; j < termCount; j++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, TERMTEXT)); BytesRef term = new BytesRef(); int termLength = _scratch.length - TERMTEXT.length; term.grow(termLength); term.length = termLength; Array.Copy(_scratch.bytes, _scratch.offset + TERMTEXT.length, term.bytes, term.offset, termLength); SimpleTVPostings postings = new SimpleTVPostings(); terms.TERMS.put(term, postings); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, TERMFREQ)); postings.FREQ = ParseIntAt(TERMFREQ.length); if (positions || offsets) { if (positions) { postings.POSITIONS = new int[postings.FREQ]; if (payloads) { postings.PAYLOADS = new BytesRef[postings.FREQ]; } } if (offsets) { postings.START_OFFSETS = new int[postings.FREQ]; postings.END_OFFSETS = new int[postings.FREQ]; } for (int k = 0; k < postings.FREQ; k++) { if (positions) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, POSITION)); postings.POSITIONS[k] = ParseIntAt(POSITION.length); if (payloads) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, PAYLOAD)); if (_scratch.length - PAYLOAD.length == 0) { postings.PAYLOADS[k] = null; } else { sbyte[] payloadBytes = new sbyte[_scratch.length - PAYLOAD.length]; Array.Copy(_scratch.bytes, _scratch.offset + PAYLOAD.length, payloadBytes, 0, payloadBytes.Length); postings.PAYLOADS[k] = new BytesRef(payloadBytes); } } } if (offsets) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, STARTOFFSET)); postings.START_OFFSETS[k] = ParseIntAt(STARTOFFSET.length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, ENDOFFSET)); postings.END_OFFSETS[k] = ParseIntAt(ENDOFFSET.length); } } } } } return(new SimpleTVFields(this, fields)); }
public override Fields Get(int doc) { var fields = new SortedDictionary <string, SimpleTVTerms>(); _input.Seek(_offsets[doc]); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.NUMFIELDS)); var numFields = ParseIntAt(SimpleTextTermVectorsWriter.NUMFIELDS.Length); if (numFields == 0) { return(null); // no vectors for this doc } for (var i = 0; i < numFields; i++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELD)); // skip fieldNumber: ParseIntAt(SimpleTextTermVectorsWriter.FIELD.Length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDNAME)); var fieldName = ReadString(SimpleTextTermVectorsWriter.FIELDNAME.Length, _scratch); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPOSITIONS)); var positions = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPOSITIONS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDOFFSETS)); var offsets = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDOFFSETS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDPAYLOADS)); var payloads = Convert.ToBoolean(ReadString(SimpleTextTermVectorsWriter.FIELDPAYLOADS.Length, _scratch)); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.FIELDTERMCOUNT)); var termCount = ParseIntAt(SimpleTextTermVectorsWriter.FIELDTERMCOUNT.Length); var terms = new SimpleTVTerms(offsets, positions, payloads); fields.Add(fieldName, terms); for (var j = 0; j < termCount; j++) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMTEXT)); var term = new BytesRef(); var termLength = _scratch.Length - SimpleTextTermVectorsWriter.TERMTEXT.Length; term.Grow(termLength); term.Length = termLength; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.TERMTEXT.Length, term.Bytes, term.Offset, termLength); var postings = new SimpleTVPostings(); terms.TERMS.Add(term, postings); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.TERMFREQ)); postings.FREQ = ParseIntAt(SimpleTextTermVectorsWriter.TERMFREQ.Length); if (!positions && !offsets) { continue; } if (positions) { postings.POSITIONS = new int[postings.FREQ]; if (payloads) { postings.PAYLOADS = new BytesRef[postings.FREQ]; } } if (offsets) { postings.START_OFFSETS = new int[postings.FREQ]; postings.END_OFFSETS = new int[postings.FREQ]; } for (var k = 0; k < postings.FREQ; k++) { if (positions) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.POSITION)); postings.POSITIONS[k] = ParseIntAt(SimpleTextTermVectorsWriter.POSITION.Length); if (payloads) { ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.PAYLOAD)); if (_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length == 0) { postings.PAYLOADS[k] = null; } else { var payloadBytes = new byte[_scratch.Length - SimpleTextTermVectorsWriter.PAYLOAD.Length]; Array.Copy(_scratch.Bytes, _scratch.Offset + SimpleTextTermVectorsWriter.PAYLOAD.Length, payloadBytes, 0, payloadBytes.Length); postings.PAYLOADS[k] = new BytesRef(payloadBytes); } } } if (!offsets) { continue; } ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.STARTOFFSET)); postings.START_OFFSETS[k] = ParseIntAt(SimpleTextTermVectorsWriter.STARTOFFSET.Length); ReadLine(); Debug.Assert(StringHelper.StartsWith(_scratch, SimpleTextTermVectorsWriter.ENDOFFSET)); postings.END_OFFSETS[k] = ParseIntAt(SimpleTextTermVectorsWriter.ENDOFFSET.Length); } } } return(new SimpleTVFields(this, fields)); }