@@ -94,6 +94,22 @@ public void testPhrase() throws IOException {
94
94
95
95
}
96
96
97
+ public void testPhraseWithStopword () throws IOException {
98
+
99
+ CannedTokenStream ts = new CannedTokenStream (
100
+ new Token ("term1" , 1 , 1 , 2 ),
101
+ new Token ("term3" , 2 , 5 , 6 )
102
+ );
103
+
104
+ IntervalsSource source = BUILDER .analyzeText (new CachingTokenFilter (ts ), 0 , true );
105
+ IntervalsSource expected = Intervals .phrase (
106
+ Intervals .term ("term1" ), Intervals .extend (Intervals .term ("term3" ), 1 , 0 )
107
+ );
108
+
109
+ assertEquals (expected , source );
110
+
111
+ }
112
+
97
113
public void testSimpleSynonyms () throws IOException {
98
114
99
115
CannedTokenStream ts = new CannedTokenStream (
@@ -112,16 +128,32 @@ public void testSimpleSynonyms() throws IOException {
112
128
113
129
}
114
130
115
- public void testGraphSynonyms () throws IOException {
131
+ public void testSimpleSynonymsWithGap () throws IOException {
132
+ // term1 [] term2/term3/term4 term5
133
+ CannedTokenStream ts = new CannedTokenStream (
134
+ new Token ("term1" , 1 , 2 ),
135
+ new Token ("term2" , 2 , 3 , 4 ),
136
+ new Token ("term3" , 0 , 3 , 4 ),
137
+ new Token ("term4" , 0 , 3 , 4 ),
138
+ new Token ("term5" , 5 , 6 )
139
+ );
140
+
141
+ IntervalsSource source = BUILDER .analyzeText (new CachingTokenFilter (ts ), -1 , true );
142
+ IntervalsSource expected = Intervals .ordered (
143
+ Intervals .term ("term1" ),
144
+ Intervals .extend (Intervals .or (Intervals .term ("term2" ), Intervals .term ("term3" ), Intervals .term ("term4" )), 1 , 0 ),
145
+ Intervals .term ("term5" )
146
+ );
147
+ assertEquals (expected , source );
148
+ }
116
149
117
- // term1 term2/term3:2 term4 term5
150
+ public void testGraphSynonyms () throws IOException {
118
151
119
- Token graphToken = new Token ("term2" , 3 , 4 );
120
- graphToken .setPositionLength (2 );
152
+ // term1 term2:2/term3 term4 term5
121
153
122
154
CannedTokenStream ts = new CannedTokenStream (
123
155
new Token ("term1" , 1 , 2 ),
124
- graphToken ,
156
+ new Token ( "term2" , 1 , 3 , 4 , 2 ) ,
125
157
new Token ("term3" , 0 , 3 , 4 ),
126
158
new Token ("term4" , 5 , 6 ),
127
159
new Token ("term5" , 6 , 7 )
@@ -138,4 +170,50 @@ public void testGraphSynonyms() throws IOException {
138
170
139
171
}
140
172
173
+ public void testGraphSynonymsWithGaps () throws IOException {
174
+
175
+ // term1 [] term2:4/term3 [] [] term4 term5
176
+
177
+ CannedTokenStream ts = new CannedTokenStream (
178
+ new Token ("term1" , 1 , 2 ),
179
+ new Token ("term2" , 2 , 3 , 4 , 4 ),
180
+ new Token ("term3" , 0 , 3 , 4 ),
181
+ new Token ("term4" , 3 , 5 , 6 ),
182
+ new Token ("term5" , 6 , 7 )
183
+ );
184
+
185
+ IntervalsSource source = BUILDER .analyzeText (new CachingTokenFilter (ts ), -1 , true );
186
+ IntervalsSource expected = Intervals .ordered (
187
+ Intervals .term ("term1" ),
188
+ Intervals .or (
189
+ Intervals .extend (Intervals .term ("term2" ), 1 , 0 ),
190
+ Intervals .phrase (
191
+ Intervals .extend (Intervals .term ("term3" ), 1 , 0 ),
192
+ Intervals .extend (Intervals .term ("term4" ), 2 , 0 ))),
193
+ Intervals .term ("term5" )
194
+ );
195
+
196
+ assertEquals (expected , source );
197
+
198
+ }
199
+
200
+ public void testGraphTerminatesOnGap () throws IOException {
201
+ // term1 term2:2/term3 term4 [] term5
202
+ CannedTokenStream ts = new CannedTokenStream (
203
+ new Token ("term1" , 1 , 2 ),
204
+ new Token ("term2" , 1 , 2 , 3 , 2 ),
205
+ new Token ("term3" , 0 , 2 , 3 ),
206
+ new Token ("term4" , 2 , 3 ),
207
+ new Token ("term5" , 2 , 6 , 7 )
208
+ );
209
+
210
+ IntervalsSource source = BUILDER .analyzeText (new CachingTokenFilter (ts ), -1 , true );
211
+ IntervalsSource expected = Intervals .ordered (
212
+ Intervals .term ("term1" ),
213
+ Intervals .or (Intervals .term ("term2" ), Intervals .phrase ("term3" , "term4" )),
214
+ Intervals .extend (Intervals .term ("term5" ), 1 , 0 )
215
+ );
216
+ assertEquals (expected , source );
217
+ }
218
+
141
219
}
0 commit comments