@@ -94,6 +94,22 @@ public void testPhrase() throws IOException {
9494
9595 }
9696
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+
97113 public void testSimpleSynonyms () throws IOException {
98114
99115 CannedTokenStream ts = new CannedTokenStream (
@@ -112,16 +128,32 @@ public void testSimpleSynonyms() throws IOException {
112128
113129 }
114130
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+ }
116149
117- // term1 term2/term3:2 term4 term5
150+ public void testGraphSynonyms () throws IOException {
118151
119- Token graphToken = new Token ("term2" , 3 , 4 );
120- graphToken .setPositionLength (2 );
152+ // term1 term2:2/term3 term4 term5
121153
122154 CannedTokenStream ts = new CannedTokenStream (
123155 new Token ("term1" , 1 , 2 ),
124- graphToken ,
156+ new Token ( "term2" , 1 , 3 , 4 , 2 ) ,
125157 new Token ("term3" , 0 , 3 , 4 ),
126158 new Token ("term4" , 5 , 6 ),
127159 new Token ("term5" , 6 , 7 )
@@ -138,4 +170,50 @@ public void testGraphSynonyms() throws IOException {
138170
139171 }
140172
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+
141219}
0 commit comments