@@ -25,51 +25,38 @@ import org.apache.lucene.util.AttributeImpl
25
25
import org.apache.lucene.util.AttributeReflector
26
26
27
27
class MorphemeAttributeImpl : AttributeImpl (), MorphemeAttribute {
28
- private val inner: ToXContentWrapper = ToXContentWrapper (null , listOf ())
28
+ private var morpheme: Morpheme ? = null
29
+ // mapping from the character offset to the original reader offset
30
+ private var offsetMap: List <Int > = listOf ()
29
31
30
- private class ToXContentWrapper ( morpheme : Morpheme ? , offsetMap : List < Int >) : ToXContent {
31
- private var morpheme = morpheme
32
- // mapping from the character to the original reader
33
- private var offsetMap = offsetMap
32
+ // wrapper class to convert data ToXContent-able
33
+ private class ToXContentWrapper ( morpheme : Morpheme , offsetMap : List < Int >) : ToXContent {
34
+ private val morpheme = morpheme
35
+ private val offsetMap = offsetMap
34
36
35
37
override fun toXContent (builder : XContentBuilder , params : ToXContentParams ): XContentBuilder {
36
38
builder.value(
37
39
mapOf (
38
- " surface" to morpheme? .surface(),
39
- " dictionaryForm" to morpheme? .dictionaryForm(),
40
- " normalizedForm" to morpheme? .normalizedForm(),
41
- " readingForm" to morpheme? .readingForm(),
42
- " partOfSpeech" to morpheme? .partOfSpeech(),
40
+ " surface" to morpheme.surface(),
41
+ " dictionaryForm" to morpheme.dictionaryForm(),
42
+ " normalizedForm" to morpheme.normalizedForm(),
43
+ " readingForm" to morpheme.readingForm(),
44
+ " partOfSpeech" to morpheme.partOfSpeech(),
43
45
" offsetMap" to offsetMap,
44
46
))
45
47
return builder
46
48
}
47
-
48
- fun getMorpheme (): Morpheme ? {
49
- return morpheme
50
- }
51
-
52
- fun setMorpheme (morpheme : Morpheme ? ) {
53
- this .morpheme = morpheme
54
- }
55
-
56
- fun getOffsets (): List <Int > {
57
- return offsetMap
58
- }
59
-
60
- fun setOffsets (offsets : List <Int >) {
61
- this .offsetMap = offsets
62
- }
63
49
}
64
50
65
51
override fun clear () {
66
- inner.setMorpheme( null )
67
- inner.setOffsets( listOf () )
52
+ morpheme = null
53
+ offsetMap = listOf ()
68
54
}
69
55
70
56
override fun reflectWith (reflector : AttributeReflector ) {
57
+ // show only when a morpheme is set
71
58
reflector.reflect<MorphemeAttribute >(
72
- " morpheme" , if (inner.getMorpheme() != null ) inner else null )
59
+ " morpheme" , morpheme?. let { m -> ToXContentWrapper (m, offsetMap) } )
73
60
}
74
61
75
62
override fun copyTo (target : AttributeImpl ? ) {
@@ -80,18 +67,18 @@ class MorphemeAttributeImpl : AttributeImpl(), MorphemeAttribute {
80
67
}
81
68
82
69
override fun getMorpheme (): Morpheme ? {
83
- return inner.getMorpheme()
70
+ return morpheme
84
71
}
85
72
86
73
override fun setMorpheme (morpheme : Morpheme ? ) {
87
- inner.setMorpheme( morpheme)
74
+ this . morpheme = morpheme
88
75
}
89
76
90
77
override fun getOffsets (): List <Int > {
91
- return inner.getOffsets()
78
+ return offsetMap
92
79
}
93
80
94
81
override fun setOffsets (offsets : List <Int >) {
95
- inner.setOffsets( offsets)
82
+ this .offsetMap = offsets
96
83
}
97
84
}
0 commit comments