blob: 5cd2d80a3513b2e2244ec26d6f3e8a4abb7f8ae1 [file] [log] [blame]
Eliza Margaretha45b5be12014-02-04 11:22:46 +00001package de.ids_mannheim.korap.index;
2
margaretha71c66ee2015-12-11 14:39:55 +01003import static org.junit.Assert.assertEquals;
Nils Diewaldf399a672013-11-18 17:55:22 +00004
margaretha71c66ee2015-12-11 14:39:55 +01005import java.io.IOException;
Nils Diewaldf399a672013-11-18 17:55:22 +00006
margaretha71c66ee2015-12-11 14:39:55 +01007import org.apache.lucene.search.spans.SpanQuery;
Nils Diewaldf399a672013-11-18 17:55:22 +00008import org.junit.Test;
Nils Diewaldf399a672013-11-18 17:55:22 +00009import org.junit.runner.RunWith;
10import org.junit.runners.JUnit4;
11
Nils Diewalda14ecd62015-02-26 21:00:20 +000012import de.ids_mannheim.korap.KrillIndex;
Nils Diewaldf399a672013-11-18 17:55:22 +000013import de.ids_mannheim.korap.query.SpanElementQuery;
margaretha71c66ee2015-12-11 14:39:55 +010014import de.ids_mannheim.korap.response.Result;
Nils Diewaldf399a672013-11-18 17:55:22 +000015
16
17@RunWith(JUnit4.class)
18public class TestElementIndex {
19
20 // Todo: primary data as a non-indexed field separated.
21
22 @Test
23 public void indexExample1 () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000024 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +000025
Nils Diewaldbb33da22015-03-04 16:24:25 +000026 // <a>x<a>y<a>zhij</a>hij</a>hij</a>hij</a>
27 FieldDocument fd = new FieldDocument();
28 fd.addTV("base", "x y z h i j h i j h i j ",
margaretha4f995582015-12-14 14:14:34 +010029 "[(0-3)s:x|<>:a$<b>64<i>0<i>3<i>12<b>0]"
30 + "[(3-6)s:y|<>:a$<b>64<i>3<i>6<i>9<b>0]"
31 + "[(6-9)s:z|<>:a$<b>64<i>6<i>9<i>6]"
Akron42993552016-02-04 13:24:24 +010032 + "[(9-12)s:h<b>0]" + "[(12-15)s:i]" + "[(15-18)s:j]"
33 + "[(18-21)s:h]" + "[(21-24)s:i]" + "[(24-27)s:j]"
34 + "[(27-30)s:h]" + "[(30-33)s:i]" + "[(33-36)s:j]");
Nils Diewaldbb33da22015-03-04 16:24:25 +000035 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +000036
Nils Diewaldbb33da22015-03-04 16:24:25 +000037 // <a>x<a>y<a>zcde</a>cde</a>cde</a>cde</a>
38 fd = new FieldDocument();
39 fd.addTV("base", "x y z c d e c d e c d e ",
margaretha4f995582015-12-14 14:14:34 +010040 "[(0-3)s:x|<>:a$<b>64<i>0<i>3<i>12<b>0]"
41 + "[(3-6)s:y|<>:a$<b>64<i>3<i>6<i>9<b>0]"
42 + "[(6-9)s:z|<>:a$<b>64<i>6<i>9<i>6]"
Akron42993552016-02-04 13:24:24 +010043 + "[(9-12)s:c<b>0]" + "[(12-15)s:d]" + "[(15-18)s:e]"
44 + "[(18-21)s:c]" + "[(21-24)s:d]" + "[(24-27)s:e]"
45 + "[(27-30)s:c]" + "[(30-33)s:d]" + "[(33-36)s:e]");
Nils Diewaldbb33da22015-03-04 16:24:25 +000046 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +000047
Nils Diewaldbb33da22015-03-04 16:24:25 +000048 // Save documents
49 ki.commit();
Nils Diewaldf399a672013-11-18 17:55:22 +000050
Nils Diewaldbb33da22015-03-04 16:24:25 +000051 assertEquals(2, ki.numberOf("documents"));
Nils Diewaldf399a672013-11-18 17:55:22 +000052
Nils Diewaldbb33da22015-03-04 16:24:25 +000053 SpanQuery sq = new SpanElementQuery("base", "a");
Nils Diewaldf399a672013-11-18 17:55:22 +000054
Nils Diewaldbb33da22015-03-04 16:24:25 +000055 Result kr = ki.search(sq, (short) 10);
Nils Diewaldf399a672013-11-18 17:55:22 +000056
Nils Diewaldbb33da22015-03-04 16:24:25 +000057 assertEquals("totalResults", kr.getTotalResults(), 6);
Nils Diewaldf399a672013-11-18 17:55:22 +000058
Nils Diewaldbb33da22015-03-04 16:24:25 +000059 assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
60 assertEquals("EndPos (0)", 12, kr.getMatch(0).endPos);
61 assertEquals("StartPos (1)", 1, kr.getMatch(1).startPos);
62 assertEquals("EndPos (1)", 9, kr.getMatch(1).endPos);
63 assertEquals("StartPos (2)", 2, kr.getMatch(2).startPos);
64 assertEquals("EndPos (2)", 6, kr.getMatch(2).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +000065
Nils Diewaldbb33da22015-03-04 16:24:25 +000066 assertEquals("StartPos (0)", 0, kr.getMatch(3).startPos);
67 assertEquals("EndPos (0)", 12, kr.getMatch(3).endPos);
68 assertEquals("StartPos (1)", 1, kr.getMatch(4).startPos);
69 assertEquals("EndPos (1)", 9, kr.getMatch(4).endPos);
70 assertEquals("StartPos (2)", 2, kr.getMatch(5).startPos);
71 assertEquals("EndPos (2)", 6, kr.getMatch(5).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +000072
Nils Diewaldbb33da22015-03-04 16:24:25 +000073 // System.err.println(kr.toJSON());
Nils Diewaldf399a672013-11-18 17:55:22 +000074 };
75
Nils Diewaldbb33da22015-03-04 16:24:25 +000076
Nils Diewaldf399a672013-11-18 17:55:22 +000077 @Test
78 public void indexExample2 () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000079 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +000080
Nils Diewaldbb33da22015-03-04 16:24:25 +000081 // <a><a><a>h</a>hhij</a>hij</a>hij</a>
82 FieldDocument fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +020083 fd.addTV("base", "h h i j h i j h i j ",
84 "[(0-3)s:h|" + "<>:a$<b>64<i>0<i>18<i>3<b>0|"
85 + "<>:a$<b>64<i>0<i>27<i>6<b>0|"
86 + "<>:a$<b>64<i>0<i>36<i>9]" + "[(3-6)s:h]"
87 + "[(12-15)s:i<b>0]" + "[(15-18)s:j]" + "[(18-21)s:h]"
88 + "[(21-24)s:i]" + "[(24-27)s:j]" + "[(27-30)s:h]"
89 + "[(30-33)s:i]" + "[(33-36)s:j]");
Nils Diewaldbb33da22015-03-04 16:24:25 +000090 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +000091
Nils Diewaldbb33da22015-03-04 16:24:25 +000092 // Save documents
93 ki.commit();
Nils Diewaldf399a672013-11-18 17:55:22 +000094
Nils Diewaldbb33da22015-03-04 16:24:25 +000095 assertEquals(1, ki.numberOf("documents"));
Nils Diewaldf399a672013-11-18 17:55:22 +000096
Nils Diewaldbb33da22015-03-04 16:24:25 +000097 SpanQuery sq = new SpanElementQuery("base", "a");
Nils Diewaldf399a672013-11-18 17:55:22 +000098
Nils Diewaldbb33da22015-03-04 16:24:25 +000099 Result kr = ki.search(sq, (short) 10);
Nils Diewaldf399a672013-11-18 17:55:22 +0000100
Nils Diewaldbb33da22015-03-04 16:24:25 +0000101 assertEquals("totalResults", kr.getTotalResults(), 3);
102 assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
103 assertEquals("EndPos (0)", 3, kr.getMatch(0).endPos);
104 assertEquals("StartPos (1)", 0, kr.getMatch(1).startPos);
105 assertEquals("EndPos (1)", 6, kr.getMatch(1).endPos);
106 assertEquals("StartPos (2)", 0, kr.getMatch(2).startPos);
107 assertEquals("EndPos (2)", 9, kr.getMatch(2).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +0000108 };
109
Nils Diewaldbb33da22015-03-04 16:24:25 +0000110
Nils Diewaldf399a672013-11-18 17:55:22 +0000111 @Test
112 public void indexExample3 () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000113 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +0000114
Nils Diewaldbb33da22015-03-04 16:24:25 +0000115 // <a><a><a>u</a></a></a>
116 FieldDocument fd = new FieldDocument();
Akron42993552016-02-04 13:24:24 +0100117 fd.addTV("base", "xyz", "[(0-3)s:xyz|<>:a$<b>64<i>0<i>3<i>0<b>0|"
margaretha4f995582015-12-14 14:14:34 +0100118 + "<>:a$<b>64<i>0<i>3<i>0<b>0|"
119 + "<>:a$<b>64<i>0<i>3<i>0<b>0|<>:b$<b>64<i>0<i>3<i>0<b>0]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000120 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000121
Nils Diewaldbb33da22015-03-04 16:24:25 +0000122 // <a><b>x<a>y<a>zcde</a>cde</a>cde</b></a>
123 fd = new FieldDocument();
124 fd.addTV("base", "x y z c d e c d e c d e ",
margaretha4f995582015-12-14 14:14:34 +0100125 "[(0-3)s:x|<>:a$<b>64<i>0<i>36<i>12<b>0|<>:b$<b>64<i>0<i>36<i>12<b>0]"
126 + "[(3-6)s:y|<>:a$<b>64<i>3<i>27<i>9<b>0]"
127 + "[(6-9)s:z|<>:a$<b>64<i>6<i>18<i>6]"
Akron42993552016-02-04 13:24:24 +0100128 + "[(9-12)s:c<b>0]" + "[(12-15)s:d]" + "[(15-18)s:e]"
129 + "[(18-21)s:c]" + "[(21-24)s:d]" + "[(24-27)s:e]"
130 + "[(27-30)s:c]" + "[(30-33)s:d]" + "[(33-36)s:e]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000131 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000132
Nils Diewaldbb33da22015-03-04 16:24:25 +0000133 // xyz
134 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200135 fd.addTV("base", "x y z ",
136 "[(0-3)s:x]" + "[(3-6)s:y]" + "[(6-9)s:z]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000137 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000138
Nils Diewaldbb33da22015-03-04 16:24:25 +0000139 // <a>x<a><b>y<a>zcde</a>cde</b></a>cde</a>
140 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200141 fd.addTV("base", "x y z k l m k l m k l m ",
margaretha4f995582015-12-14 14:14:34 +0100142 "[(0-3)s:x|<>:a$<b>64<i>0<i>3<i>12<b>0]"
143 + "[(3-6)s:y|<>:a$<b>64<i>3<i>6<i>9<b>0|<>:b$<b>64<i>3<i>6<i>9<b>0]"
144 + "[(6-9)s:z|<>:a$<b>64<i>6<i>9<i>6<b>0]"
Akron42993552016-02-04 13:24:24 +0100145 + "[(9-12)s:k<b>0]" + "[(12-15)s:l]" + "[(15-18)s:m]"
146 + "[(18-21)s:k]" + "[(21-24)s:l]" + "[(24-27)s:m]"
147 + "[(27-30)s:k]" + "[(30-33)s:l]" + "[(33-36)s:m]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000148 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000149
Nils Diewaldbb33da22015-03-04 16:24:25 +0000150 // <a><a><a>h</a>hhij</a>hij</a>hij</a>
151 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200152 fd.addTV("base", "h h i j h i j h i j ",
153 "[(0-3)s:h|" + "<>:a$<b>64<i>0<i>18<i>3<b>0|"
154 + "<>:a$<b>64<i>0<i>27<i>6<b>0|"
155 + "<>:a$<b>64<i>0<i>36<i>9<b>0]" + "[(3-6)s:h]"
156 + "[(12-15)s:i]" + "[(15-18)s:j]" + "[(18-21)s:h]"
157 + "[(21-24)s:i]" + "[(24-27)s:j]" + "[(27-30)s:h]"
158 + "[(30-33)s:i]" + "[(33-36)s:j]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000159 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000160
Nils Diewaldbb33da22015-03-04 16:24:25 +0000161 // xyz
162 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200163 fd.addTV("base", "a b c ",
164 "[(0-3)s:a]" + "[(3-6)s:b]" + "[(6-9)s:c]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000165 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000166
167
Nils Diewaldbb33da22015-03-04 16:24:25 +0000168 // Save documents
169 ki.commit();
Nils Diewaldf399a672013-11-18 17:55:22 +0000170
Nils Diewaldbb33da22015-03-04 16:24:25 +0000171 assertEquals(6, ki.numberOf("documents"));
Nils Diewaldf399a672013-11-18 17:55:22 +0000172
Nils Diewaldbb33da22015-03-04 16:24:25 +0000173 SpanQuery sq = new SpanElementQuery("base", "a");
Nils Diewaldf399a672013-11-18 17:55:22 +0000174
Nils Diewaldbb33da22015-03-04 16:24:25 +0000175 Result kr = ki.search(sq, (short) 15);
Nils Diewaldf399a672013-11-18 17:55:22 +0000176
Nils Diewaldbb33da22015-03-04 16:24:25 +0000177 // System.err.println(kr.toJSON());
Nils Diewaldf399a672013-11-18 17:55:22 +0000178
Nils Diewaldbb33da22015-03-04 16:24:25 +0000179 assertEquals("totalResults", kr.getTotalResults(), 12);
Nils Diewaldf399a672013-11-18 17:55:22 +0000180
Nils Diewaldbb33da22015-03-04 16:24:25 +0000181 assertEquals("StartPos (0)", 0, kr.getMatch(0).startPos);
182 assertEquals("EndPos (0)", 0, kr.getMatch(0).endPos);
183 assertEquals("StartPos (1)", 0, kr.getMatch(1).startPos);
184 assertEquals("EndPos (1)", 0, kr.getMatch(1).endPos);
185 assertEquals("StartPos (2)", 0, kr.getMatch(2).startPos);
186 assertEquals("EndPos (2)", 0, kr.getMatch(2).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +0000187
Nils Diewaldbb33da22015-03-04 16:24:25 +0000188 assertEquals("StartPos (3)", 0, kr.getMatch(3).startPos);
189 assertEquals("EndPos (3)", 12, kr.getMatch(3).endPos);
190 assertEquals("StartPos (4)", 1, kr.getMatch(4).startPos);
191 assertEquals("EndPos (4)", 9, kr.getMatch(4).endPos);
192 assertEquals("StartPos (5)", 2, kr.getMatch(5).startPos);
193 assertEquals("EndPos (5)", 6, kr.getMatch(5).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +0000194
Nils Diewaldbb33da22015-03-04 16:24:25 +0000195 assertEquals("StartPos (6)", 0, kr.getMatch(6).startPos);
196 assertEquals("EndPos (6)", 12, kr.getMatch(6).endPos);
197 assertEquals("StartPos (7)", 1, kr.getMatch(7).startPos);
198 assertEquals("EndPos (7)", 9, kr.getMatch(7).endPos);
199 assertEquals("StartPos (8)", 2, kr.getMatch(8).startPos);
200 assertEquals("EndPos (8)", 6, kr.getMatch(8).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +0000201
Nils Diewaldbb33da22015-03-04 16:24:25 +0000202 assertEquals("StartPos (9)", 0, kr.getMatch(9).startPos);
203 assertEquals("EndPos (9)", 3, kr.getMatch(9).endPos);
204 assertEquals("StartPos (10)", 0, kr.getMatch(10).startPos);
205 assertEquals("EndPos (10)", 6, kr.getMatch(10).endPos);
206 assertEquals("StartPos (11)", 0, kr.getMatch(11).startPos);
207 assertEquals("EndPos (11)", 9, kr.getMatch(11).endPos);
Nils Diewaldf399a672013-11-18 17:55:22 +0000208 };
209
210
211 @Test
212 public void indexExample4 () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000213 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +0000214
Nils Diewaldbb33da22015-03-04 16:24:25 +0000215 FieldDocument fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200216 fd.addTV("base", "111111ccc222222fff333333iiijjj",
217 "[(0-3)s:a|_0$<i>0<i>3]" + "[(3-6)s:b|_1$<i>3<i>6]"
margaretha71c66ee2015-12-11 14:39:55 +0100218 + "[(6-9)s:c|_2$<i>6<i>9]"
margaretha4f995582015-12-14 14:14:34 +0100219 + "[(9-12)s:d|_3$<i>9<i>12|<>:a$<b>64<i>9<i>15<i>4<b>0]"
margaretha71c66ee2015-12-11 14:39:55 +0100220 + "[(12-15)s:e|_4$<i>12<i>15]"
221 + "[(15-18)s:f|_5$<i>15<i>18]"
margaretha4f995582015-12-14 14:14:34 +0100222 + "[(18-21)s:g|_6$<i>18<i>21|<>:a$<b>64<i>18<i>24<i>8<b>0]"
margaretha71c66ee2015-12-11 14:39:55 +0100223 + "[(21-24)s:h|_7$<i>21<i>24]"
224 + "[(24-27)s:i|_8$<i>24<i>27]"
225 + "[(27-30)s:j|_9$<i>27<i>30]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000226 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000227
Nils Diewaldbb33da22015-03-04 16:24:25 +0000228 // Save documents
229 ki.commit();
Nils Diewaldf399a672013-11-18 17:55:22 +0000230
Nils Diewaldbb33da22015-03-04 16:24:25 +0000231 assertEquals(1, ki.numberOf("documents"));
Nils Diewaldf399a672013-11-18 17:55:22 +0000232
Nils Diewaldbb33da22015-03-04 16:24:25 +0000233 SpanQuery sq = new SpanElementQuery("base", "a");
Nils Diewaldf399a672013-11-18 17:55:22 +0000234
Nils Diewaldbb33da22015-03-04 16:24:25 +0000235 Result kr = ki.search(sq, 0, (short) 15, false, (short) 3, false,
236 (short) 3);
237
Eliza Margaretha6f989202016-10-14 21:48:29 +0200238 assertEquals("... ccc[[222222]]fff ...",
239 kr.getMatch(0).getSnippetBrackets());
240 assertEquals("... fff[[333333]]iii ...",
241 kr.getMatch(1).getSnippetBrackets());
Nils Diewaldf399a672013-11-18 17:55:22 +0000242 };
243
244
245 @Test
246 public void indexExample5 () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000247 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +0000248
Nils Diewaldbb33da22015-03-04 16:24:25 +0000249 FieldDocument fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200250 fd.addTV("base", "111111ccc222222fff333333iiijjj",
margaretha4f995582015-12-14 14:14:34 +0100251 "[(0-3)s:a|_0$<i>0<i>3|<>:a$<b>64<i>0<i>6<i>1<b>0]"
Eliza Margaretha6f989202016-10-14 21:48:29 +0200252 + "[(3-6)s:b|_1$<i>3<i>6]" + "[(6-9)s:c|_2$<i>6<i>9]"
margaretha4f995582015-12-14 14:14:34 +0100253 + "[(9-12)s:d|_3$<i>9<i>12|<>:a$<b>64<i>9<i>15<i>4<b>0]"
margaretha71c66ee2015-12-11 14:39:55 +0100254 + "[(12-15)s:e|_4$<i>12<i>15]"
255 + "[(15-18)s:f|_5$<i>15<i>18]"
margaretha4f995582015-12-14 14:14:34 +0100256 + "[(18-21)s:g|_6$<i>18<i>21|<>:a$<b>64<i>18<i>24<i>8<b>0]"
margaretha71c66ee2015-12-11 14:39:55 +0100257 + "[(21-24)s:h|_7$<i>21<i>24]"
258 + "[(24-27)s:i|_8$<i>24<i>27]"
259 + "[(27-30)s:j|_9$<i>27<i>30]");
Nils Diewaldbb33da22015-03-04 16:24:25 +0000260 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +0000261
Nils Diewaldbb33da22015-03-04 16:24:25 +0000262 // Save documents
263 ki.commit();
Nils Diewaldf399a672013-11-18 17:55:22 +0000264
Nils Diewaldbb33da22015-03-04 16:24:25 +0000265 assertEquals(1, ki.numberOf("documents"));
Nils Diewaldf399a672013-11-18 17:55:22 +0000266
Nils Diewaldbb33da22015-03-04 16:24:25 +0000267 SpanQuery sq = new SpanElementQuery("base", "a");
Nils Diewaldf399a672013-11-18 17:55:22 +0000268
Nils Diewaldbb33da22015-03-04 16:24:25 +0000269 Result kr = ki.search(sq, 0, (short) 15, false, (short) 3, false,
270 (short) 3);
Nils Diewaldf399a672013-11-18 17:55:22 +0000271
Akronf05fde62016-08-03 23:46:17 +0200272 assertEquals("[[111111]]ccc ...", kr.getMatch(0).getSnippetBrackets());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200273 assertEquals("... ccc[[222222]]fff ...",
274 kr.getMatch(1).getSnippetBrackets());
275 assertEquals("... fff[[333333]]iii ...",
276 kr.getMatch(2).getSnippetBrackets());
Nils Diewaldf399a672013-11-18 17:55:22 +0000277 };
Nils Diewald20607ab2014-03-20 23:28:36 +0000278
279
280 @Test
281 public void indexExample6 () throws IOException {
282
Nils Diewaldbb33da22015-03-04 16:24:25 +0000283 KrillIndex ki = new KrillIndex();
Nils Diewald20607ab2014-03-20 23:28:36 +0000284
Nils Diewaldbb33da22015-03-04 16:24:25 +0000285 // <a>x<a>y<a>zhij</a>hij</a>hij</a>
286 FieldDocument fd = new FieldDocument();
287 fd.addTV("base", "x y z h i j h i j h i j ",
margaretha4f995582015-12-14 14:14:34 +0100288 "[(0-3)s:x|_0$<i>0<i>3|<>:a$<b>64<i>0<i>36<i>12<b>0]" + // 1
289 "[(3-6)s:y|_1$<i>3<i>6|<>:a$<b>64<i>3<i>27<i>9<b>0]" + // 2
290 "[(6-9)s:z|_2$<i>6<i>9|<>:a$<b>64<i>6<i>18<i>6<b>0]" + // 3
margaretha71c66ee2015-12-11 14:39:55 +0100291 "[(9-12)s:h|_3$<i>9<i>12]" + // 4
292 "[(12-15)s:i|_4$<i>12<i>15]" + // 5
293 "[(15-18)s:j|_5$<i>15<i>18]" + // 6
294 "[(18-21)s:h|_6$<i>18<i>21]" + // 7
295 "[(21-24)s:i|_7$<i>21<i>24]" + // 8
296 "[(24-27)s:j|_8$<i>24<i>27]" + // 9
297 "[(27-30)s:h|_9$<i>27<i>30]" + // 10
298 "[(30-33)s:i|_10$<i>30<i>33]" + // 11
299 "[(33-36)s:j|_11$<i>33<i>36]"); // 12
Nils Diewaldbb33da22015-03-04 16:24:25 +0000300 ki.addDoc(fd);
Nils Diewald20607ab2014-03-20 23:28:36 +0000301
Nils Diewaldbb33da22015-03-04 16:24:25 +0000302 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200303 fd.addTV("base", "x y z h ",
304 "[(0-3)s:x|_0$<i>0<i>3]" + // 1
305 "[(3-6)s:y|_1$<i>3<i>6]" + // 2
306 "[(6-9)s:z|_2$<i>6<i>9]" + // 3
307 "[(9-12)s:h|_3$<i>9<i>12]"); // 4
Nils Diewaldbb33da22015-03-04 16:24:25 +0000308 ki.addDoc(fd);
Nils Diewald20607ab2014-03-20 23:28:36 +0000309
Nils Diewaldbb33da22015-03-04 16:24:25 +0000310 // Here is a larger offset than expected
311 fd = new FieldDocument();
margaretha71c66ee2015-12-11 14:39:55 +0100312 fd.addTV("base", "x y z h ",
margaretha4f995582015-12-14 14:14:34 +0100313 "[(0-3)s:x|_0$<i>0<i>3|<>:a$<b>64<i>0<i>36<i>12<b>0]" + // 1
margaretha71c66ee2015-12-11 14:39:55 +0100314 "[(3-6)s:y|_1$<i>3<i>6]" + // 2
315 "[(6-9)s:z|_2$<i>6<i>9]" + // 3
316 "[(9-12)s:h|_3$<i>9<i>12]"); // 4
Nils Diewaldbb33da22015-03-04 16:24:25 +0000317 ki.addDoc(fd);
Nils Diewald20607ab2014-03-20 23:28:36 +0000318
Nils Diewaldbb33da22015-03-04 16:24:25 +0000319 // <a>x<a>y<a>zabc</a>abc</a>abc</a>
320 fd = new FieldDocument();
321 fd.addTV("base", "x y z a b c a b c a b c ",
margaretha4f995582015-12-14 14:14:34 +0100322 "[(0-3)s:x|_0$<i>0<i>3|<>:a$<b>64<i>0<i>36<i>12<b>0]" + // 1
323 "[(3-6)s:y|_1$<i>3<i>6|<>:a$<b>64<i>3<i>27<i>9<b>0]" + // 2
324 "[(6-9)s:z|_2$<i>6<i>9|<>:a$<b>64<i>6<i>18<i>6<b>0]" + // 3
margaretha71c66ee2015-12-11 14:39:55 +0100325 "[(9-12)s:a|_3$<i>9<i>12]" + // 4
326 "[(12-15)s:b|_4$<i>12<i>15]" + // 5
327 "[(15-18)s:c|_5$<i>15<i>18]" + // 6
328 "[(18-21)s:a|_6$<i>18<i>21]" + // 7
329 "[(21-24)s:b|_7$<i>21<i>24]" + // 8
330 "[(24-27)s:c|_8$<i>24<i>27]" + // 9
331 "[(27-30)s:a|_9$<i>27<i>30]" + // 10
332 "[(30-33)s:b|_10$<i>30<i>33]" + // 11
333 "[(33-36)s:c|_11$<i>33<i>36]"); // 12
Nils Diewaldbb33da22015-03-04 16:24:25 +0000334 ki.addDoc(fd);
Nils Diewald20607ab2014-03-20 23:28:36 +0000335
Nils Diewaldbb33da22015-03-04 16:24:25 +0000336 fd = new FieldDocument();
Eliza Margaretha6f989202016-10-14 21:48:29 +0200337 fd.addTV("base", "x y z h ",
338 "[(0-3)s:x|_0$<i>0<i>3]" + // 1
339 "[(3-6)s:y|_1$<i>3<i>6]" + // 2
340 "[(6-9)s:z|_2$<i>6<i>9]" + // 3
341 "[(9-12)s:h|_3$<i>9<i>12]"); // 4
Nils Diewaldbb33da22015-03-04 16:24:25 +0000342 ki.addDoc(fd);
Nils Diewald20607ab2014-03-20 23:28:36 +0000343
Nils Diewaldbb33da22015-03-04 16:24:25 +0000344 // Save documents
345 ki.commit();
Nils Diewald20607ab2014-03-20 23:28:36 +0000346
Nils Diewaldbb33da22015-03-04 16:24:25 +0000347 SpanQuery sq;
348 Result kr;
Nils Diewald20607ab2014-03-20 23:28:36 +0000349
Nils Diewaldbb33da22015-03-04 16:24:25 +0000350 sq = new SpanElementQuery("base", "a");
351 kr = ki.search(sq, (short) 15);
352
353 // System.err.println(kr.toJSON());
354
355 assertEquals(5, ki.numberOf("documents"));
356 assertEquals("totalResults", kr.getTotalResults(), 7);
Nils Diewald20607ab2014-03-20 23:28:36 +0000357 };
Nils Diewaldf399a672013-11-18 17:55:22 +0000358};