MtasCodecPostingsFormat.java.html
15.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MtasCodecPostingsFormat.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">MTAS</a> > <a href="index.source.html" class="el_package">mtas.codec</a> > <span class="el_source">MtasCodecPostingsFormat.java</span></div><h1>MtasCodecPostingsFormat.java</h1><pre class="source lang-java linenums">package mtas.codec;
import java.io.IOException;
import mtas.analysis.token.MtasTokenString;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.codecs.FieldsConsumer;
import org.apache.lucene.codecs.FieldsProducer;
import org.apache.lucene.codecs.PostingsFormat;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.SegmentWriteState;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.util.BytesRef;
/**
* The Class MtasCodecPostingsFormat.
*/
public class MtasCodecPostingsFormat extends PostingsFormat {
/** The Constant log. */
<span class="fc" id="L24"> private static final Log log = LogFactory</span>
<span class="fc" id="L25"> .getLog(MtasCodecPostingsFormat.class);</span>
/** The Constant VERSION_START. */
public static final int VERSION_START = 3;
/** The Constant VERSION_CURRENT. */
public static final int VERSION_CURRENT = 3;
/** The Constant MTAS_OBJECT_HAS_PARENT. */
static final int MTAS_OBJECT_HAS_PARENT = 1;
/** The Constant MTAS_OBJECT_HAS_POSITION_RANGE. */
static final int MTAS_OBJECT_HAS_POSITION_RANGE = 2;
/** The Constant MTAS_OBJECT_HAS_POSITION_SET. */
static final int MTAS_OBJECT_HAS_POSITION_SET = 4;
/** The Constant MTAS_OBJECT_HAS_OFFSET. */
static final int MTAS_OBJECT_HAS_OFFSET = 8;
/** The Constant MTAS_OBJECT_HAS_REALOFFSET. */
static final int MTAS_OBJECT_HAS_REALOFFSET = 16;
/** The Constant MTAS_OBJECT_HAS_PAYLOAD. */
static final int MTAS_OBJECT_HAS_PAYLOAD = 32;
/** The Constant MTAS_STORAGE_BYTE. */
public static final int MTAS_STORAGE_BYTE = 0;
/** The Constant MTAS_STORAGE_SHORT. */
public static final int MTAS_STORAGE_SHORT = 1;
/** The Constant MTAS_STORAGE_INTEGER. */
public static final int MTAS_STORAGE_INTEGER = 2;
/** The Constant MTAS_STORAGE_LONG. */
public static final int MTAS_STORAGE_LONG = 3;
/** The Constant MTAS_TMP_FIELD_EXTENSION. */
public static final String MTAS_TMP_FIELD_EXTENSION = "mtas.field.temporary";
/** The Constant MTAS_TMP_OBJECT_EXTENSION. */
public static final String MTAS_TMP_OBJECT_EXTENSION = "mtas.object.temporary";
/** The Constant MTAS_TMP_DOCS_EXTENSION. */
public static final String MTAS_TMP_DOCS_EXTENSION = "mtas.docs.temporary";
/** The Constant MTAS_TMP_DOC_EXTENSION. */
public static final String MTAS_TMP_DOC_EXTENSION = "mtas.doc.temporary";
/** The Constant MTAS_TMP_DOCS_CHAINED_EXTENSION. */
public static final String MTAS_TMP_DOCS_CHAINED_EXTENSION = "mtas.docs.chained.temporary";
/** The Constant MTAS_FIELDINFO_ATTRIBUTE_PREFIX_SINGLE_POSITION. */
public static final String MTAS_FIELDINFO_ATTRIBUTE_PREFIX_SINGLE_POSITION = "mtas.prefix.single.position";
/** The Constant MTAS_FIELDINFO_ATTRIBUTE_PREFIX_MULTIPLE_POSITION. */
public static final String MTAS_FIELDINFO_ATTRIBUTE_PREFIX_MULTIPLE_POSITION = "mtas.prefix.multiple.position";
/** The Constant MTAS_FIELDINFO_ATTRIBUTE_PREFIX_SET_POSITION. */
public static final String MTAS_FIELDINFO_ATTRIBUTE_PREFIX_SET_POSITION = "mtas.prefix.set.position";
/** The Constant MTAS_FIELDINFO_ATTRIBUTE_PREFIX_INTERSECTION. */
public static final String MTAS_FIELDINFO_ATTRIBUTE_PREFIX_INTERSECTION = "mtas.prefix.intersection";
/** The Constant MTAS_OBJECT_EXTENSION. */
public static final String MTAS_OBJECT_EXTENSION = "mtas.object";
/** The Constant MTAS_TERM_EXTENSION. */
public static final String MTAS_TERM_EXTENSION = "mtas.term";
/** The Constant MTAS_FIELD_EXTENSION. */
public static final String MTAS_FIELD_EXTENSION = "mtas.field";
/** The Constant MTAS_PREFIX_EXTENSION. */
public static final String MTAS_PREFIX_EXTENSION = "mtas.prefix";
/** The Constant MTAS_DOC_EXTENSION. */
public static final String MTAS_DOC_EXTENSION = "mtas.doc";
/** The Constant MTAS_INDEX_DOC_ID_EXTENSION. */
public static final String MTAS_INDEX_DOC_ID_EXTENSION = "mtas.index.doc.id";
/** The Constant MTAS_INDEX_OBJECT_ID_EXTENSION. */
public static final String MTAS_INDEX_OBJECT_ID_EXTENSION = "mtas.index.object.id";
/** The Constant MTAS_INDEX_OBJECT_POSITION_EXTENSION. */
public static final String MTAS_INDEX_OBJECT_POSITION_EXTENSION = "mtas.index.object.position";
/** The Constant MTAS_INDEX_OBJECT_PARENT_EXTENSION. */
public static final String MTAS_INDEX_OBJECT_PARENT_EXTENSION = "mtas.index.object.parent";
/** The Constant MTAS_INDEX_TERM_PREFIX_POSITION_EXTENSION. */
public static final String MTAS_INDEX_TERM_PREFIX_POSITION_EXTENSION = "mtas.index.term.prefix.position";
/** The delegate codec name. */
<span class="fc" id="L121"> private String delegateCodecName = null;</span>
/** The delegate postings format. */
<span class="fc" id="L124"> private PostingsFormat delegatePostingsFormat = null;</span>
/**
* Instantiates a new mtas codec postings format.
*/
public MtasCodecPostingsFormat() {
<span class="fc" id="L130"> this(MtasCodec.MTAS_CODEC_NAME);</span>
<span class="fc" id="L131"> }</span>
/**
* Instantiates a new mtas codec postings format.
*
* @param delegate the delegate
*/
public MtasCodecPostingsFormat(PostingsFormat delegate) {
<span class="fc" id="L139"> super(MtasCodec.MTAS_CODEC_NAME);</span>
<span class="fc" id="L140"> delegateCodecName = delegate.getName();</span>
<span class="fc" id="L141"> delegatePostingsFormat = delegate;</span>
// preload to prevent NoClassDefFoundErrors
try {
<span class="fc" id="L144"> Class.forName("mtas.codec.payload.MtasPayloadDecoder");</span>
<span class="fc" id="L145"> Class.forName("mtas.codec.payload.MtasBitInputStream");</span>
<span class="fc" id="L146"> Class.forName("mtas.analysis.token.MtasPosition");</span>
<span class="fc" id="L147"> Class.forName("mtas.analysis.token.MtasOffset");</span>
<span class="fc" id="L148"> Class.forName("mtas.codec.tree.MtasRBTree");</span>
<span class="fc" id="L149"> Class.forName("mtas.codec.MtasTerms");</span>
<span class="fc" id="L150"> Class.forName("mtas.codec.util.CodecInfo");</span>
<span class="fc" id="L151"> Class.forName("mtas.codec.tree.MtasTreeNodeId");</span>
<span class="nc" id="L152"> } catch (ClassNotFoundException e) {</span>
<span class="nc" id="L153"> log.error(e);</span>
<span class="fc" id="L154"> }</span>
<span class="fc" id="L155"> }</span>
/**
* Instantiates a new mtas codec postings format.
*
* @param codecName the codec name
*/
public MtasCodecPostingsFormat(String codecName) {
<span class="fc" id="L163"> super(codecName);</span>
<span class="fc" id="L164"> delegateCodecName = codecName;</span>
<span class="fc" id="L165"> delegatePostingsFormat = null;</span>
// preload to prevent NoClassDefFoundErrors
try {
<span class="fc" id="L168"> Class.forName("mtas.codec.payload.MtasPayloadDecoder");</span>
<span class="fc" id="L169"> Class.forName("mtas.codec.payload.MtasBitInputStream");</span>
<span class="fc" id="L170"> Class.forName("mtas.analysis.token.MtasPosition");</span>
<span class="fc" id="L171"> Class.forName("mtas.analysis.token.MtasOffset");</span>
<span class="fc" id="L172"> Class.forName("mtas.codec.tree.MtasRBTree");</span>
<span class="fc" id="L173"> Class.forName("mtas.codec.MtasTerms");</span>
<span class="fc" id="L174"> Class.forName("mtas.codec.util.CodecInfo");</span>
<span class="fc" id="L175"> Class.forName("mtas.codec.tree.MtasTreeNodeId");</span>
<span class="nc" id="L176"> } catch (ClassNotFoundException e) {</span>
<span class="nc" id="L177"> log.error(e);</span>
<span class="fc" id="L178"> }</span>
<span class="fc" id="L179"> }</span>
/*
* (non-Javadoc)
*
* @see
* org.apache.lucene.codecs.PostingsFormat#fieldsProducer(org.apache.lucene
* .index.SegmentReadState)
*/
@Override
public final FieldsProducer fieldsProducer(SegmentReadState state)
throws IOException {
<span class="fc" id="L191"> return new MtasFieldsProducer(state, getName());</span>
}
/*
* (non-Javadoc)
*
* @see
* org.apache.lucene.codecs.PostingsFormat#fieldsConsumer(org.apache.lucene
* .index.SegmentWriteState)
*/
@Override
public final FieldsConsumer fieldsConsumer(SegmentWriteState state)
throws IOException {
<span class="fc bfc" id="L204" title="All 2 branches covered."> if (delegatePostingsFormat != null) {</span>
<span class="fc" id="L205"> return new MtasFieldsConsumer(</span>
<span class="fc" id="L206"> delegatePostingsFormat.fieldsConsumer(state), state, getName(),</span>
<span class="fc" id="L207"> delegatePostingsFormat.getName());</span>
} else {
<span class="fc" id="L209"> PostingsFormat pf = Codec.forName(delegateCodecName).postingsFormat();</span>
<span class="fc" id="L210"> return pf.fieldsConsumer(state);</span>
}
}
/**
* Gets the token.
*
* @param inObject the in object
* @param inTerm the in term
* @param ref the ref
* @return the token
* @throws IOException Signals that an I/O exception has occurred.
*/
public static MtasTokenString getToken(IndexInput inObject, IndexInput inTerm,
Long ref) throws IOException {
<span class="fc" id="L225"> MtasTokenString token = null;</span>
try {
<span class="fc" id="L227"> inObject.seek(ref);</span>
<span class="fc" id="L228"> token = new MtasTokenString(null, "");</span>
<span class="fc" id="L229"> token.setId(inObject.readVInt());</span>
<span class="fc" id="L230"> token.setTokenRef(ref);</span>
<span class="fc" id="L231"> int objectFlags = inObject.readVInt();</span>
<span class="fc" id="L232"> int[] positions = null;</span>
<span class="fc bfc" id="L233" title="All 2 branches covered."> if ((objectFlags & MTAS_OBJECT_HAS_PARENT) == MTAS_OBJECT_HAS_PARENT) {</span>
<span class="fc" id="L234"> int parentId = inObject.readVInt();</span>
<span class="fc" id="L235"> token.setParentId(parentId);</span>
}
<span class="fc bfc" id="L237" title="All 2 branches covered."> if ((objectFlags</span>
& MTAS_OBJECT_HAS_POSITION_RANGE) == MTAS_OBJECT_HAS_POSITION_RANGE) {
<span class="fc" id="L239"> int positionStart = inObject.readVInt();</span>
<span class="fc" id="L240"> int positionEnd = positionStart + inObject.readVInt();</span>
<span class="fc" id="L241"> token.addPositionRange(positionStart, positionEnd);</span>
<span class="fc bfc" id="L242" title="All 2 branches covered."> } else if ((objectFlags</span>
& MTAS_OBJECT_HAS_POSITION_SET) == MTAS_OBJECT_HAS_POSITION_SET) {
<span class="fc" id="L244"> int size = inObject.readVInt();</span>
<span class="fc" id="L245"> int tmpPrevious = 0;</span>
<span class="fc" id="L246"> positions = new int[size];</span>
<span class="fc bfc" id="L247" title="All 2 branches covered."> for (int t = 0; t < size; t++) {</span>
<span class="fc" id="L248"> int position = tmpPrevious + inObject.readVInt();</span>
<span class="fc" id="L249"> tmpPrevious = position;</span>
<span class="fc" id="L250"> positions[t] = position;</span>
}
<span class="fc" id="L252"> token.addPositions(positions);</span>
<span class="fc" id="L253"> } else {</span>
<span class="fc" id="L254"> int position = inObject.readVInt();</span>
<span class="fc" id="L255"> token.addPosition(position);</span>
}
<span class="pc bpc" id="L257" title="1 of 2 branches missed."> if ((objectFlags & MTAS_OBJECT_HAS_OFFSET) == MTAS_OBJECT_HAS_OFFSET) {</span>
<span class="nc" id="L258"> int offsetStart = inObject.readVInt();</span>
<span class="nc" id="L259"> int offsetEnd = offsetStart + inObject.readVInt();</span>
<span class="nc" id="L260"> token.setOffset(offsetStart, offsetEnd);</span>
}
<span class="pc bpc" id="L262" title="1 of 2 branches missed."> if ((objectFlags</span>
& MTAS_OBJECT_HAS_REALOFFSET) == MTAS_OBJECT_HAS_REALOFFSET) {
<span class="nc" id="L264"> int realOffsetStart = inObject.readVInt();</span>
<span class="nc" id="L265"> int realOffsetEnd = realOffsetStart + inObject.readVInt();</span>
<span class="nc" id="L266"> token.setRealOffset(realOffsetStart, realOffsetEnd);</span>
}
<span class="pc bpc" id="L268" title="1 of 2 branches missed."> if ((objectFlags & MTAS_OBJECT_HAS_PAYLOAD) == MTAS_OBJECT_HAS_PAYLOAD) {</span>
<span class="nc" id="L269"> int length = inObject.readVInt();</span>
<span class="nc" id="L270"> byte[] mtasPayload = new byte[length];</span>
<span class="nc" id="L271"> inObject.readBytes(mtasPayload, 0, length);</span>
<span class="nc" id="L272"> token.setPayload(new BytesRef(mtasPayload));</span>
}
<span class="fc" id="L274"> Long termRef = inObject.readVLong();</span>
<span class="fc" id="L275"> inTerm.seek(termRef);</span>
<span class="fc" id="L276"> token.setTermRef(termRef);</span>
<span class="fc" id="L277"> token.setValue(inTerm.readString());</span>
<span class="nc" id="L278"> } catch (Exception e) {</span>
<span class="nc" id="L279"> throw new IOException(e);</span>
<span class="fc" id="L280"> }</span>
<span class="fc" id="L281"> return token;</span>
}
/**
* Gets the term.
*
* @param inTerm the in term
* @param ref the ref
* @return the term
* @throws IOException Signals that an I/O exception has occurred.
*/
public static String getTerm(IndexInput inTerm, Long ref) throws IOException {
try {
<span class="fc" id="L294"> inTerm.seek(ref);</span>
<span class="fc" id="L295"> return inTerm.readString();</span>
<span class="nc" id="L296"> } catch (Exception e) {</span>
<span class="nc" id="L297"> throw new IOException(e);</span>
}
}
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.7.9.201702052155</span></div></body></html>