blob: 204217516152f06d8684c9a7c00f77f19bfc577b [file] [log] [blame]
Nils Diewalde3645702014-11-07 21:15:20 +00001package de.ids_mannheim.korap.search;
2
3import java.util.*;
4import java.io.*;
5
6import static de.ids_mannheim.korap.TestSimple.*;
7
Nils Diewaldbbd39a52015-02-23 19:56:57 +00008import de.ids_mannheim.korap.Krill;
Nils Diewald2d5f8102015-02-26 21:07:54 +00009import de.ids_mannheim.korap.KrillCollection;
Nils Diewald0339d462015-02-26 14:53:56 +000010import de.ids_mannheim.korap.KrillQuery;
Nils Diewalda14ecd62015-02-26 21:00:20 +000011import de.ids_mannheim.korap.KrillIndex;
Nils Diewalde3645702014-11-07 21:15:20 +000012import de.ids_mannheim.korap.index.FieldDocument;
Nils Diewald884dbcf2015-02-27 17:02:28 +000013import de.ids_mannheim.korap.response.Result;
Nils Diewalde3645702014-11-07 21:15:20 +000014import java.nio.file.Files;
15import java.nio.file.FileSystem;
16import java.nio.file.Path;
17import java.nio.charset.StandardCharsets;
18import java.nio.ByteBuffer;
19
Akron932dd592021-07-27 12:52:46 +020020import org.apache.commons.lang3.StringUtils;
Akron484c3c12015-07-07 20:25:44 +020021import org.apache.lucene.analysis.Analyzer;
22import org.apache.lucene.analysis.TokenStream;
23import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
24
Nils Diewalde3645702014-11-07 21:15:20 +000025import com.fasterxml.jackson.databind.ObjectMapper;
26import com.fasterxml.jackson.databind.JsonNode;
27
28import static org.junit.Assert.*;
29import org.junit.Test;
30import org.junit.Ignore;
31import org.junit.runner.RunWith;
32import org.junit.runners.JUnit4;
33
34@RunWith(JUnit4.class)
35public class TestMetaFields {
Akron640458c2015-06-25 12:36:15 +020036
Nils Diewalde3645702014-11-07 21:15:20 +000037 @Test
38 public void searchMetaFields () throws IOException {
39
Nils Diewald3aa9e692015-02-20 22:20:11 +000040 // Construct index
Nils Diewalda14ecd62015-02-26 21:00:20 +000041 KrillIndex ki = new KrillIndex();
Nils Diewald3aa9e692015-02-20 22:20:11 +000042 // Indexing test files
Nils Diewaldbb33da22015-03-04 16:24:25 +000043 for (String i : new String[] { "00001", "00002" }) {
Eliza Margaretha6f989202016-10-14 21:48:29 +020044 ki.addDoc(getClass().getResourceAsStream("/wiki/" + i + ".json.gz"),
Nils Diewaldbb33da22015-03-04 16:24:25 +000045 true);
Nils Diewald3aa9e692015-02-20 22:20:11 +000046 };
47 ki.commit();
Nils Diewalde3645702014-11-07 21:15:20 +000048
Eliza Margaretha6f989202016-10-14 21:48:29 +020049 String jsonString = getJsonString(getClass()
50 .getResource("/queries/metas/fields.jsonld").getFile());
Nils Diewaldbb33da22015-03-04 16:24:25 +000051
Nils Diewaldbbd39a52015-02-23 19:56:57 +000052 Krill ks = new Krill(jsonString);
Nils Diewalde3645702014-11-07 21:15:20 +000053
Nils Diewald884dbcf2015-02-27 17:02:28 +000054 Result kr = ks.apply(ki);
Nils Diewald3aa9e692015-02-20 22:20:11 +000055 assertEquals((long) 17, kr.getTotalResults());
56 assertEquals(0, kr.getStartIndex());
57 assertEquals(9, kr.getItemsPerPage());
Nils Diewaldbb33da22015-03-04 16:24:25 +000058
Nils Diewald3aa9e692015-02-20 22:20:11 +000059 ObjectMapper mapper = new ObjectMapper();
60 JsonNode res = mapper.readTree(kr.toJsonString());
Akronb1166442015-06-27 00:34:19 +020061
Akronb1166442015-06-27 00:34:19 +020062 // mirror fields
63 assertEquals(9, res.at("/meta/count").asInt());
64
65 if (res.at("/meta/fields/0").asText().equals("UID")) {
66 assertEquals("corpusID", res.at("/meta/fields/1").asText());
67 }
68 else {
69 assertEquals("corpusID", res.at("/meta/fields/0").asText());
70 assertEquals("UID", res.at("/meta/fields/1").asText());
71 };
72
Nils Diewald3aa9e692015-02-20 22:20:11 +000073 assertEquals(0, res.at("/matches/0/UID").asInt());
74 assertEquals("WPD", res.at("/matches/0/corpusID").asText());
Akron12f1f5b2015-06-24 15:56:52 +020075 assertTrue(res.at("/matches/0/docID").isMissingNode());
76 assertTrue(res.at("/matches/0/textSigle").isMissingNode());
77 assertTrue(res.at("/matches/0/ID").isMissingNode());
78 assertTrue(res.at("/matches/0/author").isMissingNode());
79 assertTrue(res.at("/matches/0/title").isMissingNode());
80 assertTrue(res.at("/matches/0/subTitle").isMissingNode());
81 assertTrue(res.at("/matches/0/textClass").isMissingNode());
82 assertTrue(res.at("/matches/0/pubPlace").isMissingNode());
83 assertTrue(res.at("/matches/0/pubDate").isMissingNode());
84 assertTrue(res.at("/matches/0/foundries").isMissingNode());
85 assertTrue(res.at("/matches/0/layerInfos").isMissingNode());
86 assertTrue(res.at("/matches/0/tokenization").isMissingNode());
Nils Diewalde3645702014-11-07 21:15:20 +000087
Eliza Margaretha6f989202016-10-14 21:48:29 +020088 jsonString = getJsonString(getClass()
89 .getResource("/queries/metas/fields_2.jsonld").getFile());
Nils Diewaldbbd39a52015-02-23 19:56:57 +000090 ks = new Krill(jsonString);
Nils Diewald3aa9e692015-02-20 22:20:11 +000091 kr = ks.apply(ki);
92 assertEquals((long) 17, kr.getTotalResults());
93 assertEquals(0, kr.getStartIndex());
94 assertEquals(2, kr.getItemsPerPage());
Nils Diewaldbb33da22015-03-04 16:24:25 +000095
Nils Diewald3aa9e692015-02-20 22:20:11 +000096 mapper = new ObjectMapper();
97 res = mapper.readTree(kr.toJsonString());
98 assertEquals(0, res.at("/matches/0/UID").asInt());
Akron12f1f5b2015-06-24 15:56:52 +020099 assertTrue(res.at("/matches/0/corpusID").isMissingNode());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200100 assertEquals("Ruru,Jens.Ol,Aglarech",
101 res.at("/matches/0/author").asText());
Nils Diewald3aa9e692015-02-20 22:20:11 +0000102 assertEquals("A", res.at("/matches/0/title").asText());
103 assertEquals("WPD_AAA.00001", res.at("/matches/0/docID").asText());
Akron3e0403f2015-06-24 20:59:13 +0200104 assertTrue(res.at("/matches/0/textSigle").isMissingNode());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200105 assertEquals("match-WPD_AAA.00001-p6-7",
106 res.at("/matches/0/matchID").asText());
Akron48937e92015-06-26 01:49:02 +0200107 // assertEquals("p6-7", res.at("/matches/0/matchID").asText());
Akron32b95192019-01-11 13:58:55 +0100108 assertTrue(res.at("/matches/0/subTitle").isMissingNode());
Nils Diewald3aa9e692015-02-20 22:20:11 +0000109 assertEquals("", res.at("/matches/0/subTitle").asText());
110 assertEquals("", res.at("/matches/0/textClass").asText());
111 assertEquals("", res.at("/matches/0/pubPlace").asText());
112 assertEquals("", res.at("/matches/0/pubDate").asText());
113 assertEquals("", res.at("/matches/0/foundries").asText());
114 assertEquals("", res.at("/matches/0/layerInfo").asText());
115 assertEquals("", res.at("/matches/0/tokenization").asText());
Nils Diewalde3645702014-11-07 21:15:20 +0000116 };
Akron3e0403f2015-06-24 20:59:13 +0200117
Akron640458c2015-06-25 12:36:15 +0200118
Akron3e0403f2015-06-24 20:59:13 +0200119 @Test
120 public void searchMetaFieldsNew () throws IOException {
121
122 // Construct index
123 KrillIndex ki = new KrillIndex();
Akron640458c2015-06-25 12:36:15 +0200124 ki.addDoc(getClass().getResourceAsStream("/goe/AGX-00002.json"), false);
Akron3e0403f2015-06-24 20:59:13 +0200125 ki.commit();
126
Eliza Margaretha6f989202016-10-14 21:48:29 +0200127 String jsonString = getJsonString(getClass()
128 .getResource("/queries/metas/fields_no.jsonld").getFile());
Akron3e0403f2015-06-24 20:59:13 +0200129
130 Krill ks = new Krill(jsonString);
131 Result kr = ks.apply(ki);
132 ObjectMapper mapper = new ObjectMapper();
133 JsonNode res = mapper.readTree(kr.toJsonString());
Akronbe9638d2019-02-07 17:09:42 +0100134
Akron3e0403f2015-06-24 20:59:13 +0200135 assertEquals(0, res.at("/matches/0/UID").asInt());
136 assertEquals("GOE_AGX.00002", res.at("/matches/0/textSigle").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200137 assertEquals("Maximen und Reflexionen",
138 res.at("/matches/0/title").asText());
Akron3e0403f2015-06-24 20:59:13 +0200139 assertEquals("1982", res.at("/matches/0/pubDate").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200140 assertEquals("Goethe, Johann Wolfgang von",
141 res.at("/matches/0/author").asText());
Akron3e0403f2015-06-24 20:59:13 +0200142 assertEquals("GOE_AGX", res.at("/matches/0/docSigle").asText());
143 assertEquals("GOE", res.at("/matches/0/corpusSigle").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200144 assertEquals("Religion und Christentum",
145 res.at("/matches/0/subTitle").asText());
Akron3e0403f2015-06-24 20:59:13 +0200146 assertEquals("München", res.at("/matches/0/pubPlace").asText());
Akron640458c2015-06-25 12:36:15 +0200147 assertEquals(
148 "base/s=spans cnx/c=spans cnx/l=tokens cnx/m=tokens cnx/p=tokens cnx/s=spans cnx/syn=tokens corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans xip/c=spans xip/l=tokens xip/p=tokens xip/s=spans",
149 res.at("/matches/0/layerInfos").asText());
Akron3e0403f2015-06-24 20:59:13 +0200150 assertTrue(res.at("/matches/0/textType").isMissingNode());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200151 assertEquals("match-GOE_AGX.00002-p7-8",
152 res.at("/matches/0/matchID").asText());
Akron48937e92015-06-26 01:49:02 +0200153
Akron3e0403f2015-06-24 20:59:13 +0200154
155 // All fields
Eliza Margaretha6f989202016-10-14 21:48:29 +0200156 jsonString = getJsonString(getClass()
157 .getResource("/queries/metas/fields_all.jsonld").getFile());
Akron3e0403f2015-06-24 20:59:13 +0200158
159 ks = new Krill(jsonString);
160 kr = ks.apply(ki);
161 mapper = new ObjectMapper();
162 res = mapper.readTree(kr.toJsonString());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200163 assertEquals("Verlag C. H. Beck",
164 res.at("/matches/0/publisher").asText());
Akron3e0403f2015-06-24 20:59:13 +0200165 assertEquals("Aphorismus", res.at("/matches/0/textType").asText());
166 assertEquals("Aphorismen", res.at("/matches/0/textTypeRef").asText());
Akron640458c2015-06-25 12:36:15 +0200167 assertEquals(
168 "Goethe, Johann Wolfgang von: Maximen und Reflexionen. Religion und Christentum, [Aphorismen], (Erstveröffentlichung: Stuttgart ; Tübingen, 1827-1842), In: Goethe, Johann Wolfgang von: Goethes Werke, Bd. 12, Schriften zur Kunst. Schriften zur Literatur. Maximen und Reflexionen, Hrsg.: Trunz, Erich. München: Verlag C. H. Beck, 1982, S. 372-377",
169 res.at("/matches/0/reference").asText());
Akron3e0403f2015-06-24 20:59:13 +0200170 assertEquals("de", res.at("/matches/0/language").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200171 assertEquals("opennlp#tokens",
172 res.at("/matches/0/tokenSource").asText());
Akron640458c2015-06-25 12:36:15 +0200173 assertEquals(
174 "base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/namedentities corenlp/sentences glemm glemm/morpho mate mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences",
175 res.at("/matches/0/foundries").asText());
Akron2b921a62019-01-14 18:52:45 +0100176
Eliza Margaretha6f989202016-10-14 21:48:29 +0200177 assertEquals("Goethe-Korpus",
178 res.at("/matches/0/corpusTitle").asText());
Akron7e3a10f2017-05-05 15:36:20 +0200179 assertEquals("QAO-NC", res.at("/matches/0/availability").asText());
Akron640458c2015-06-25 12:36:15 +0200180 assertEquals("Goethe: Maximen und Reflexionen, (1827-1842)",
181 res.at("/matches/0/docTitle").asText());
Akron3e0403f2015-06-24 20:59:13 +0200182 assertEquals("1827", res.at("/matches/0/creationDate").asText());
Akron69b958c2017-02-15 22:49:45 +0100183 // assertEquals("372-377", res.at("/matches/0/pages").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200184 assertEquals("match-GOE_AGX.00002-p7-8",
185 res.at("/matches/0/matchID").asText());
Akron6590c322015-07-02 16:08:13 +0200186
187
188 // @All fields
Eliza Margaretha6f989202016-10-14 21:48:29 +0200189 jsonString = getJsonString(getClass()
190 .getResource("/queries/metas/fields_at_all.jsonld").getFile());
Akron6590c322015-07-02 16:08:13 +0200191
192 ks = new Krill(jsonString);
193 kr = ks.apply(ki);
194 mapper = new ObjectMapper();
195 res = mapper.readTree(kr.toJsonString());
196
Eliza Margaretha6f989202016-10-14 21:48:29 +0200197 assertEquals("Verlag C. H. Beck",
198 res.at("/matches/0/publisher").asText());
Akron6590c322015-07-02 16:08:13 +0200199 assertEquals("Aphorismus", res.at("/matches/0/textType").asText());
200 assertEquals("Aphorismen", res.at("/matches/0/textTypeRef").asText());
201 assertEquals(
202 "Goethe, Johann Wolfgang von: Maximen und Reflexionen. Religion und Christentum, [Aphorismen], (Erstveröffentlichung: Stuttgart ; Tübingen, 1827-1842), In: Goethe, Johann Wolfgang von: Goethes Werke, Bd. 12, Schriften zur Kunst. Schriften zur Literatur. Maximen und Reflexionen, Hrsg.: Trunz, Erich. München: Verlag C. H. Beck, 1982, S. 372-377",
203 res.at("/matches/0/reference").asText());
204 assertEquals("de", res.at("/matches/0/language").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200205 assertEquals("opennlp#tokens",
206 res.at("/matches/0/tokenSource").asText());
Akron6590c322015-07-02 16:08:13 +0200207 assertEquals(
208 "base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/namedentities corenlp/sentences glemm glemm/morpho mate mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences",
209 res.at("/matches/0/foundries").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200210 assertEquals("Goethe-Korpus",
211 res.at("/matches/0/corpusTitle").asText());
Akrone64cc162019-01-08 18:40:37 +0100212 assertEquals("QAO-NC", res.at("/matches/0/availability").asText());
Akron6590c322015-07-02 16:08:13 +0200213 assertEquals("Goethe: Maximen und Reflexionen, (1827-1842)",
214 res.at("/matches/0/docTitle").asText());
215 assertEquals("1827", res.at("/matches/0/creationDate").asText());
Akron69b958c2017-02-15 22:49:45 +0100216 // assertEquals("372-377", res.at("/matches/0/pages").asText());
Eliza Margaretha6f989202016-10-14 21:48:29 +0200217 assertEquals("match-GOE_AGX.00002-p7-8",
218 res.at("/matches/0/matchID").asText());
Akron3e0403f2015-06-24 20:59:13 +0200219 };
Akron48937e92015-06-26 01:49:02 +0200220
Akron40550172015-08-04 03:06:12 +0200221
Akron484c3c12015-07-07 20:25:44 +0200222 @Test
Akronbe9638d2019-02-07 17:09:42 +0100223 public void searchMetaFieldsDuplicateKeys () throws IOException {
224
225 // Construct index
226 KrillIndex ki = new KrillIndex();
227 ki.addDoc(getClass().getResourceAsStream("/goe/AGX-00002.json"), false);
228 ki.commit();
229
230 String jsonString = getJsonString(getClass()
231 .getResource("/queries/metas/fields_single.jsonld").getFile());
232
233 Krill ks = new Krill(jsonString);
234 ks.getMeta().setLimit(1);
235 Result kr = ks.apply(ki);
236
237 String resultJson = kr.toJsonString();
238
239 assertTrue(resultJson.indexOf("\"textSigle\":\"GOE_AGX.00002\"") > 0);
240 assertTrue(resultJson.indexOf("\"docSigle\":\"GOE_AGX\"") > 0);
241 assertTrue(resultJson.indexOf("\"corpusSigle\":\"GOE\"") > 0);
Akrond475d992021-11-23 18:39:47 +0100242 // assertTrue(resultJson.indexOf("\"UID\":") > 0);
Akronbe9638d2019-02-07 17:09:42 +0100243 assertTrue(resultJson.indexOf("\"availability\":") > 0);
244
245 assertEquals(
246 resultJson.indexOf("\"textSigle\":\"GOE_AGX.00002\""),
247 resultJson.lastIndexOf("\"textSigle\":\"GOE_AGX.00002\"")
248 );
249 assertEquals(
250 resultJson.indexOf("\"docSigle\":\"GOE_AGX\""),
251 resultJson.lastIndexOf("\"docSigle\":\"GOE_AGX\"")
252 );
253 assertEquals(
254 resultJson.indexOf("\"corpusSigle\":\"GOE\""),
255 resultJson.lastIndexOf("\"corpusSigle\":\"GOE\"")
256 );
257 assertEquals(
258 resultJson.indexOf("\"UID\":0"),
259 resultJson.lastIndexOf("\"UID\":0")
260 );
261 assertEquals(
262 resultJson.indexOf("\"availability\":"),
263 resultJson.lastIndexOf("\"availability\":")
264 );
265 };
266
267 @Test
Akron484c3c12015-07-07 20:25:44 +0200268 public void searchCollectionFields () throws IOException {
269 KrillIndex ki = new KrillIndex();
270 FieldDocument fd = new FieldDocument();
271 fd.addString("corpusSigle", "ABC");
272 fd.addString("docSigle", "ABC-123");
273 fd.addString("textSigle", "ABC-123-0001");
274 fd.addText("title", "Die Wahlverwandschaften");
275 fd.addText("author", "Johann Wolfgang von Goethe");
Akrona6dabb72019-01-09 13:09:41 +0100276 fd.addKeywords("textClass", "reisen wissenschaft");
Akron484c3c12015-07-07 20:25:44 +0200277 fd.addInt("pubDate", 20130617);
278 fd.addTV("tokens", "abc", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>10]"
279 + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:c|i:c|_2#2-3]");
280 ki.addDoc(fd);
281
282 FieldDocument fd2 = new FieldDocument();
283 fd2.addString("corpusSigle", "ABC");
284 fd2.addString("docSigle", "ABC-125");
285 fd2.addString("textSigle", "ABC-125-0001");
286 fd2.addText("title", "Die Glocke");
287 fd2.addText("author", "Schiller, Friedrich");
Akrona6dabb72019-01-09 13:09:41 +0100288 fd2.addKeywords("textClass", "Reisen geschichte");
Akron484c3c12015-07-07 20:25:44 +0200289 fd2.addInt("pubDate", 20130203);
290 fd2.addTV("tokens", "abc", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>10]"
291 + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:c|i:c|_2#2-3]");
292 ki.addDoc(fd2);
293 ki.commit();
294
295 // textClass = reisen & wissenschaft
Eliza Margaretha6f989202016-10-14 21:48:29 +0200296 String jsonString = getJsonString(getClass()
297 .getResource("/queries/collections/collection_textClass.jsonld")
298 .getFile());
Akron484c3c12015-07-07 20:25:44 +0200299 Krill ks = new Krill(jsonString);
300 KrillCollection kc = ks.getCollection();
301 kc.setIndex(ki);
Akron484c3c12015-07-07 20:25:44 +0200302 assertEquals(1, kc.numberOf("documents"));
303
304 // textClass = reisen
Eliza Margaretha6f989202016-10-14 21:48:29 +0200305 jsonString = getJsonString(getClass()
306 .getResource(
307 "/queries/collections/collection_textClass_2.jsonld")
308 .getFile());
Akron484c3c12015-07-07 20:25:44 +0200309 ks = new Krill(jsonString);
310 kc = ks.getCollection();
311 kc.setIndex(ki);
Akron484c3c12015-07-07 20:25:44 +0200312 assertEquals(2, kc.numberOf("documents"));
313
314 /*
Akron484c3c12015-07-07 20:25:44 +0200315 TokenStream ts = fd2.doc.getField("author").tokenStream(
316 (Analyzer) ki.writer().getAnalyzer(),
317 (TokenStream) null
318 );
319 // OffsetAttribute offsetAttribute = ts.addAttribute(OffsetAttribute.class);
320 CharTermAttribute charTermAttribute = ts.addAttribute(CharTermAttribute.class);
Eliza Margaretha6f989202016-10-14 21:48:29 +0200321
Akron484c3c12015-07-07 20:25:44 +0200322 ts.reset();
323 while (ts.incrementToken()) {
324 String term = charTermAttribute.toString();
325 System.err.println(">>" + term + "<<");
326 };
327 */
328
329 // author = wolfgang
Eliza Margaretha6f989202016-10-14 21:48:29 +0200330 jsonString = getJsonString(getClass()
331 .getResource("/queries/collections/collection_goethe.jsonld")
332 .getFile());
Akron484c3c12015-07-07 20:25:44 +0200333 ks = new Krill(jsonString);
334 kc = ks.getCollection();
335 kc.setIndex(ki);
Akron484c3c12015-07-07 20:25:44 +0200336 assertEquals(1, kc.numberOf("documents"));
337
338 // author = Wolfgang
Eliza Margaretha6f989202016-10-14 21:48:29 +0200339 jsonString = getJsonString(getClass()
340 .getResource("/queries/collections/collection_goethe_2.jsonld")
341 .getFile());
Akron484c3c12015-07-07 20:25:44 +0200342 ks = new Krill(jsonString);
343 kc = ks.getCollection();
344 kc.setIndex(ki);
Akron484c3c12015-07-07 20:25:44 +0200345 assertEquals(1, kc.numberOf("documents"));
346
347 Result kr = ks.apply(ki);
Akron40550172015-08-04 03:06:12 +0200348
Akron484c3c12015-07-07 20:25:44 +0200349 ObjectMapper mapper = new ObjectMapper();
350 JsonNode res = mapper.readTree(kr.toJsonString());
351 assertEquals(1, res.at("/meta/totalResults").asInt());
352 };
353
Akron48937e92015-06-26 01:49:02 +0200354
355 @Test
356 public void searchMetaContext () throws IOException {
357
358 // All fields
Eliza Margaretha6f989202016-10-14 21:48:29 +0200359 String jsonString = getJsonString(getClass()
360 .getResource("/queries/metas/context_paragraph.jsonld")
361 .getFile());
Akron48937e92015-06-26 01:49:02 +0200362
363 Krill ks = new Krill(jsonString);
364 assertTrue(ks.getMeta().getContext().isSpanDefined());
365 assertEquals("base/p", ks.getMeta().getContext().getSpanContext());
366 };
Akron8bb3bc32018-12-12 19:34:56 +0100367
Akron9de655e2021-07-05 15:23:31 +0200368
369 @Test
370 public void searchMetaAndSnippets () throws IOException {
371
372 // All fields
373 String jsonString = getJsonString(getClass()
374 .getResource("/queries/metas/no-snippets.jsonld")
375 .getFile());
376
377 Krill ks = new Krill(jsonString);
378 assertFalse(ks.getMeta().hasSnippets());
379 };
380
Akron8bb3bc32018-12-12 19:34:56 +0100381
382 @Test
383 public void searchMetaAssets () throws IOException {
384 KrillIndex ki = new KrillIndex();
385 FieldDocument fd = new FieldDocument();
386 fd.addString("textSigle", "ABC-123-0002");
387 fd.addText("title", "Die Wahlverwandtschaften");
388 fd.addText("author", "Johann Wolfgang von Goethe");
Akrona6dabb72019-01-09 13:09:41 +0100389 fd.addKeywords("textClass", "reisen wissenschaft");
Akronc7a2abc2019-01-17 14:21:34 +0100390 fd.addDate("pubDate", 20130617);
Akron8bb3bc32018-12-12 19:34:56 +0100391 fd.addTV("tokens", "abc", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>10]"
392 + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:c|i:c|_2#2-3]");
393 fd.addAttachement("WikiLink", "data:application/x.korap-link,https://de.wikipedia.org/wiki/Beispiel");
394 ki.addDoc(fd);
395 ki.commit();
396
397 assertEquals(fd.doc.getField("textSigle").stringValue(), "ABC-123-0002");
398 assertEquals(fd.doc.getField("title").stringValue(), "Die Wahlverwandtschaften");
399 assertEquals(fd.doc.getField("author").stringValue(), "Johann Wolfgang von Goethe");
400 assertEquals(fd.doc.getField("textClass").stringValue(), "reisen wissenschaft");
401 assertEquals(fd.doc.getField("pubDate").stringValue(), "20130617");
402 assertEquals(fd.doc.getField("WikiLink").stringValue(), "data:application/x.korap-link,https://de.wikipedia.org/wiki/Beispiel");
403 }
404
Nils Diewalde3645702014-11-07 21:15:20 +0000405};