public override DocsAndPositionsEnum DocsAndPositions(FieldInfo fieldInfo, BlockTermState termState, IBits liveDocs, DocsAndPositionsEnum reuse, DocsAndPositionsFlags flags) { // LUCENENET specific - to avoid boxing, changed from CompareTo() to IndexOptionsComparer.Compare() bool hasOffsets = IndexOptionsComparer.Default.Compare(fieldInfo.IndexOptions, IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0; // TODO: can we optimize if FLAG_PAYLOADS / FLAG_OFFSETS // isn't passed? // TODO: refactor if (fieldInfo.HasPayloads || hasOffsets) { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec if (reuse is null || !(reuse is SegmentFullPositionsEnum docsEnum) || docsEnum.startFreqIn != freqIn) { docsEnum = new SegmentFullPositionsEnum(this, freqIn, proxIn); } return(docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs)); } else { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec if (reuse is null || !(reuse is SegmentDocsAndPositionsEnum docsEnum) || docsEnum.startFreqIn != freqIn) { docsEnum = new SegmentDocsAndPositionsEnum(this, freqIn, proxIn); } return(docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs)); } }
public override DocsAndPositionsEnum DocsAndPositions(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, DocsAndPositionsEnum reuse, int flags) { bool hasOffsets = fieldInfo.FieldIndexOptions >= FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS; // TODO: can we optimize if FLAG_PAYLOADS / FLAG_OFFSETS // isn't passed? // TODO: refactor if (fieldInfo.HasPayloads() || hasOffsets) { SegmentFullPositionsEnum docsEnum; if (reuse == null || !(reuse is SegmentFullPositionsEnum)) { docsEnum = new SegmentFullPositionsEnum(this, FreqIn, ProxIn); } else { docsEnum = (SegmentFullPositionsEnum)reuse; if (docsEnum.StartFreqIn != FreqIn) { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec docsEnum = new SegmentFullPositionsEnum(this, FreqIn, ProxIn); } } return(docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs)); } else { SegmentDocsAndPositionsEnum docsEnum; if (reuse == null || !(reuse is SegmentDocsAndPositionsEnum)) { docsEnum = new SegmentDocsAndPositionsEnum(this, FreqIn, ProxIn); } else { docsEnum = (SegmentDocsAndPositionsEnum)reuse; if (docsEnum.StartFreqIn != FreqIn) { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec docsEnum = new SegmentDocsAndPositionsEnum(this, FreqIn, ProxIn); } } return(docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs)); } }
public override DocsAndPositionsEnum DocsAndPositions(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, DocsAndPositionsEnum reuse, int flags) { bool hasOffsets = fieldInfo.FieldIndexOptions >= FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS; // TODO: can we optimize if FLAG_PAYLOADS / FLAG_OFFSETS // isn't passed? // TODO: refactor if (fieldInfo.HasPayloads() || hasOffsets) { SegmentFullPositionsEnum docsEnum; if (reuse == null || !(reuse is SegmentFullPositionsEnum)) { docsEnum = new SegmentFullPositionsEnum(this, FreqIn, ProxIn); } else { docsEnum = (SegmentFullPositionsEnum)reuse; if (docsEnum.StartFreqIn != FreqIn) { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec docsEnum = new SegmentFullPositionsEnum(this, FreqIn, ProxIn); } } return docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs); } else { SegmentDocsAndPositionsEnum docsEnum; if (reuse == null || !(reuse is SegmentDocsAndPositionsEnum)) { docsEnum = new SegmentDocsAndPositionsEnum(this, FreqIn, ProxIn); } else { docsEnum = (SegmentDocsAndPositionsEnum)reuse; if (docsEnum.StartFreqIn != FreqIn) { // If you are using ParellelReader, and pass in a // reused DocsEnum, it could have come from another // reader also using standard codec docsEnum = new SegmentDocsAndPositionsEnum(this, FreqIn, ProxIn); } } return docsEnum.Reset(fieldInfo, (StandardTermState)termState, liveDocs); } }