| Eliza Margaretha | 269e5a6 | 2014-09-30 16:58:23 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.search; |
| 2 | |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 3 | import java.util.*; |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 4 | import java.io.*; |
| Akron | 67d2ff0 | 2018-06-19 10:51:16 +0200 | [diff] [blame] | 5 | import static de.ids_mannheim.korap.TestSimple.*; |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 6 | |
| 7 | import org.apache.lucene.search.spans.SpanQuery; |
| 8 | |
| Nils Diewald | a14ecd6 | 2015-02-26 21:00:20 +0000 | [diff] [blame] | 9 | import de.ids_mannheim.korap.KrillIndex; |
| Nils Diewald | 0339d46 | 2015-02-26 14:53:56 +0000 | [diff] [blame] | 10 | import de.ids_mannheim.korap.KrillQuery; |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 11 | import de.ids_mannheim.korap.response.Result; |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 12 | import de.ids_mannheim.korap.Krill; |
| Nils Diewald | 392bcf3 | 2015-02-26 20:01:17 +0000 | [diff] [blame] | 13 | import de.ids_mannheim.korap.response.Match; |
| Nils Diewald | 8904c1d | 2015-02-26 16:13:18 +0000 | [diff] [blame] | 14 | import de.ids_mannheim.korap.query.QueryBuilder; |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 15 | import de.ids_mannheim.korap.index.FieldDocument; |
| 16 | |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 17 | import de.ids_mannheim.korap.util.QueryException; |
| 18 | |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 19 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 20 | import com.fasterxml.jackson.databind.JsonNode; |
| 21 | |
| 22 | import static de.ids_mannheim.korap.Test.*; |
| 23 | |
| 24 | import static org.junit.Assert.*; |
| 25 | import org.junit.Test; |
| 26 | import org.junit.Ignore; |
| 27 | import org.junit.runner.RunWith; |
| 28 | import org.junit.runners.JUnit4; |
| 29 | |
| 30 | @RunWith(JUnit4.class) |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 31 | public class TestResult { |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 32 | |
| 33 | @Test |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 34 | public void checkJSONResult () throws Exception { |
| Nils Diewald | a14ecd6 | 2015-02-26 21:00:20 +0000 | [diff] [blame] | 35 | KrillIndex ki = new KrillIndex(); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 36 | FieldDocument fd = new FieldDocument(); |
| 37 | fd.addString("ID", "doc-1"); |
| 38 | fd.addString("UID", "1"); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 39 | fd.addTV("base", "abab", |
| 40 | "[(0-1)s:a|i:a|_0#0-1|-:t$<i>4]" + "[(1-2)s:b|i:b|_1#1-2]" |
| 41 | + "[(2-3)s:a|i:c|_2#2-3]" + "[(3-4)s:b|i:a|_3#3-4]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 42 | ki.addDoc(fd); |
| 43 | fd = new FieldDocument(); |
| 44 | fd.addString("ID", "doc-2"); |
| 45 | fd.addString("UID", "2"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 46 | fd.addTV("base", "aba", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>3]" |
| 47 | + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:a|i:c|_2#2-3]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 48 | ki.addDoc(fd); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 49 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 50 | // Commit! |
| 51 | ki.commit(); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 52 | |
| Nils Diewald | 8904c1d | 2015-02-26 16:13:18 +0000 | [diff] [blame] | 53 | QueryBuilder kq = new QueryBuilder("base"); |
| Akron | 4f52a63 | 2018-02-09 19:02:40 +0100 | [diff] [blame] | 54 | SpanQuery q = (SpanQuery) kq.or(kq.nr(1, kq.seg("s:a"))) |
| 55 | .or(kq.nr(2, kq.seg("s:b"))).toQuery(); |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 56 | Result kr = ki.search(q); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 57 | assertEquals((long) 7, kr.getTotalResults()); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 58 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 59 | ObjectMapper mapper = new ObjectMapper(); |
| 60 | JsonNode res = mapper.readTree(kr.toJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 61 | assertEquals(7, res.at("/meta/totalResults").asInt()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 62 | assertEquals("spanOr([{1: base:s:a}, {2: base:s:b}])", |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 63 | res.at("/meta/serialQuery").asText()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 64 | assertEquals(0, res.at("/startIndex").asInt()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 65 | assertEquals(25, res.at("/meta/itemsPerPage").asInt()); |
| 66 | assertEquals("token", res.at("/meta/context/left/0").asText()); |
| 67 | assertEquals(6, res.at("/meta/context/left/1").asInt()); |
| 68 | assertEquals("token", res.at("/meta/context/right/0").asText()); |
| 69 | assertEquals(6, res.at("/meta/context/right/1").asInt()); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 70 | |
| Akron | e64cc16 | 2019-01-08 18:40:37 +0100 | [diff] [blame] | 71 | // assertEquals("base", res.at("/matches/0/field").asText()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 72 | /* |
| 73 | Probably a Jackson bug |
| 74 | assertTrue(res.at("/matches/0/startMore").asBoolean()); |
| 75 | assertTrue(res.at("/matches/0/endMore").asBoolean()); |
| 76 | */ |
| 77 | assertEquals(1, res.at("/matches/0/UID").asInt()); |
| 78 | assertEquals("doc-1", res.at("/matches/0/docID").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 79 | assertEquals("match-doc-1-p0-1(1)0-0", |
| 80 | res.at("/matches/0/matchID").asText()); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 81 | assertEquals( |
| Akron | f05fde6 | 2016-08-03 23:46:17 +0200 | [diff] [blame] | 82 | "<span class=\"context-left\"></span><span class=\"match\"><mark><mark class=\"class-1 level-0\">a</mark></mark></span><span class=\"context-right\">bab</span>", |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 83 | res.at("/matches/0/snippet").asText()); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 84 | |
| Akron | e64cc16 | 2019-01-08 18:40:37 +0100 | [diff] [blame] | 85 | // assertEquals("base", res.at("/matches/6/field").asText()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 86 | /* |
| 87 | Probably a Jackson bug |
| 88 | assertEquals(true, res.at("/matches/6/startMore").asBoolean()); |
| 89 | assertEquals(true, res.at("/matches/6/endMore").asBoolean()); |
| 90 | */ |
| 91 | assertEquals(2, res.at("/matches/6/UID").asInt()); |
| 92 | assertEquals("doc-2", res.at("/matches/6/docID").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 93 | assertEquals("match-doc-2-p2-3(1)2-2", |
| 94 | res.at("/matches/6/matchID").asText()); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 95 | assertEquals( |
| Akron | f05fde6 | 2016-08-03 23:46:17 +0200 | [diff] [blame] | 96 | "<span class=\"context-left\">ab</span><span class=\"match\"><mark><mark class=\"class-1 level-0\">a</mark></mark></span><span class=\"context-right\"></span>", |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 97 | res.at("/matches/6/snippet").asText()); |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 98 | }; |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 99 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 100 | |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 101 | @Test |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 102 | public void checkJSONResultWarningBug () throws Exception { |
| Nils Diewald | a14ecd6 | 2015-02-26 21:00:20 +0000 | [diff] [blame] | 103 | KrillIndex ki = new KrillIndex(); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 104 | FieldDocument fd = new FieldDocument(); |
| 105 | fd.addString("ID", "doc-1"); |
| 106 | fd.addString("UID", "1"); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 107 | fd.addTV("tokens", "abab", |
| 108 | "[(0-1)s:a|i:a|_0#0-1|-:t$<i>4]" + "[(1-2)s:b|i:b|_1#1-2]" |
| 109 | + "[(2-3)s:a|i:c|_2#2-3]" + "[(3-4)s:b|i:a|_3#3-4]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 110 | ki.addDoc(fd); |
| 111 | ki.commit(); |
| Nils Diewald | 886d321 | 2014-11-14 01:27:23 +0000 | [diff] [blame] | 112 | |
| Akron | 67d2ff0 | 2018-06-19 10:51:16 +0200 | [diff] [blame] | 113 | String json = getJsonString(getClass() |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 114 | .getResource("/queries/bugs/optionality_warning.jsonld") |
| 115 | .getFile()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 116 | Krill ks = new Krill(json); |
| Nils Diewald | 886d321 | 2014-11-14 01:27:23 +0000 | [diff] [blame] | 117 | |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 118 | Result kr = ks.apply(ki); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 119 | assertEquals((long) 2, kr.getTotalResults()); |
| Nils Diewald | 886d321 | 2014-11-14 01:27:23 +0000 | [diff] [blame] | 120 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 121 | ObjectMapper mapper = new ObjectMapper(); |
| 122 | JsonNode res = mapper.readTree(kr.toJsonString()); |
| Nils Diewald | 886d321 | 2014-11-14 01:27:23 +0000 | [diff] [blame] | 123 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 124 | // Old: |
| 125 | // assertEquals("Optionality of query is ignored", res.at("/warning").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 126 | assertEquals("Optionality of query is ignored", |
| 127 | res.at("/warnings/0/1").asText()); |
| Nils Diewald | 886d321 | 2014-11-14 01:27:23 +0000 | [diff] [blame] | 128 | }; |
| 129 | |
| 130 | |
| 131 | @Test |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 132 | public void checkJSONResultForJSONInput () throws Exception { |
| Nils Diewald | a14ecd6 | 2015-02-26 21:00:20 +0000 | [diff] [blame] | 133 | KrillIndex ki = new KrillIndex(); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 134 | FieldDocument fd = new FieldDocument(); |
| 135 | fd.addString("ID", "doc-1"); |
| 136 | fd.addString("UID", "1"); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 137 | fd.addTV("tokens", "abab", |
| 138 | "[(0-1)s:a|i:a|_0#0-1|-:t$<i>4]" + "[(1-2)s:b|i:b|_1#1-2]" |
| 139 | + "[(2-3)s:a|i:c|_2#2-3]" + "[(3-4)s:b|i:a|_3#3-4]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 140 | ki.addDoc(fd); |
| 141 | fd = new FieldDocument(); |
| 142 | fd.addString("ID", "doc-2"); |
| 143 | fd.addString("UID", "2"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 144 | fd.addTV("tokens", "aba", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>3]" |
| 145 | + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:a|i:c|_2#2-3]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 146 | ki.addDoc(fd); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 147 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 148 | // Commit! |
| 149 | ki.commit(); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 150 | |
| Akron | 67d2ff0 | 2018-06-19 10:51:16 +0200 | [diff] [blame] | 151 | String json = getJsonString(getClass() |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 152 | .getResource("/queries/bsp-result-check.jsonld").getFile()); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 153 | Krill ks = new Krill(json); |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 154 | Result kr = ks.apply(ki); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 155 | assertEquals((long) 7, kr.getTotalResults()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 156 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 157 | ObjectMapper mapper = new ObjectMapper(); |
| 158 | JsonNode res = mapper.readTree(kr.toJsonString()); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 159 | |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 160 | assertEquals(7, res.at("/meta/totalResults").asInt()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 161 | assertEquals("spanOr([tokens:s:a, tokens:s:b])", |
| 162 | res.at("/meta/serialQuery").asText()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 163 | assertEquals(5, res.at("/meta/itemsPerPage").asInt()); |
| 164 | assertEquals(0, res.at("/meta/startIndex").asInt()); |
| 165 | |
| 166 | // Request meta |
| Akron | b116644 | 2015-06-27 00:34:19 +0200 | [diff] [blame] | 167 | // assertEquals(1, res.at("/meta/startPage").asInt()); |
| 168 | assertEquals(5, res.at("/meta/count").asInt()); |
| 169 | assertEquals("token", res.at("/meta/context/left/0").asText()); |
| 170 | assertEquals(3, res.at("/meta/context/left/1").asInt()); |
| 171 | assertEquals("char", res.at("/meta/context/right/0").asText()); |
| 172 | assertEquals(6, res.at("/meta/context/right/1").asInt()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 173 | assertEquals("token", res.at("/meta/context/left/0").asText()); |
| 174 | assertEquals(3, res.at("/meta/context/left/1").asInt()); |
| 175 | assertEquals("char", res.at("/meta/context/right/0").asText()); |
| 176 | assertEquals(6, res.at("/meta/context/right/1").asInt()); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 177 | |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 178 | // Query |
| 179 | assertEquals("koral:group", res.at("/query/@type").asText()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 180 | assertEquals("operation:or", res.at("/query/operation").asText()); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 181 | |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 182 | assertEquals("koral:token", res.at("/query/operands/0/@type").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 183 | assertEquals("koral:term", |
| 184 | res.at("/query/operands/0/wrap/@type").asText()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 185 | assertEquals("orth", res.at("/query/operands/0/wrap/layer").asText()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 186 | assertEquals("a", res.at("/query/operands/0/wrap/key").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 187 | assertEquals("match:eq", |
| 188 | res.at("/query/operands/0/wrap/match").asText()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 189 | assertEquals("koral:token", res.at("/query/operands/1/@type").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 190 | assertEquals("koral:term", |
| 191 | res.at("/query/operands/1/wrap/@type").asText()); |
| Akron | bb5d173 | 2015-06-22 01:22:40 +0200 | [diff] [blame] | 192 | assertEquals("orth", res.at("/query/operands/1/wrap/layer").asText()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 193 | assertEquals("b", res.at("/query/operands/1/wrap/key").asText()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 194 | assertEquals("match:eq", |
| 195 | res.at("/query/operands/1/wrap/match").asText()); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 196 | |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 197 | // Matches |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 198 | assertEquals(1, res.at("/matches/0/UID").asInt()); |
| 199 | assertEquals("doc-1", res.at("/matches/0/docID").asText()); |
| Akron | 48937e9 | 2015-06-26 01:49:02 +0200 | [diff] [blame] | 200 | assertEquals("match-doc-1-p0-1", res.at("/matches/0/matchID").asText()); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 201 | assertEquals( |
| Akron | f05fde6 | 2016-08-03 23:46:17 +0200 | [diff] [blame] | 202 | "<span class=\"context-left\"></span><span class=\"match\"><mark>a</mark></span><span class=\"context-right\">bab</span>", |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 203 | res.at("/matches/0/snippet").asText()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 204 | |
| 205 | // No primaryData serialization |
| 206 | assertTrue(res.at("/matches/0/primaryData").isMissingNode()); |
| Nils Diewald | ea28b62 | 2014-10-01 16:01:31 +0000 | [diff] [blame] | 207 | }; |
| 208 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 209 | |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 210 | @Test |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 211 | public void checkJSONTokenResult () throws Exception { |
| Nils Diewald | a14ecd6 | 2015-02-26 21:00:20 +0000 | [diff] [blame] | 212 | KrillIndex ki = new KrillIndex(); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 213 | FieldDocument fd = new FieldDocument(); |
| 214 | fd.addString("ID", "doc-1"); |
| 215 | fd.addString("UID", "1"); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 216 | fd.addTV("base", "abab", |
| 217 | "[(0-1)s:a|i:a|_0#0-1|-:t$<i>4]" + "[(1-2)s:b|i:b|_1#1-2]" |
| 218 | + "[(2-3)s:a|i:c|_2#2-3]" + "[(3-4)s:b|i:a|_3#3-4]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 219 | ki.addDoc(fd); |
| 220 | fd = new FieldDocument(); |
| 221 | fd.addString("ID", "doc-2"); |
| 222 | fd.addString("UID", "2"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 223 | fd.addTV("base", "aba", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>3]" |
| 224 | + "[(1-2)s:b|i:b|_1#1-2]" + "[(2-3)s:a|i:c|_2#2-3]"); |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 225 | ki.addDoc(fd); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 226 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 227 | // Commit! |
| 228 | ki.commit(); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 229 | |
| Nils Diewald | 8904c1d | 2015-02-26 16:13:18 +0000 | [diff] [blame] | 230 | QueryBuilder kq = new QueryBuilder("base"); |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 231 | SpanQuery q = (SpanQuery) kq.seq(kq.seg("s:a")).append(kq.seg("s:b")) |
| 232 | .toQuery(); |
| Nils Diewald | 884dbcf | 2015-02-27 17:02:28 +0000 | [diff] [blame] | 233 | Result kr = ki.search(q); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 234 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 235 | assertEquals((long) 3, kr.getTotalResults()); |
| 236 | ObjectMapper mapper = new ObjectMapper(); |
| 237 | JsonNode res = mapper.readTree(kr.toTokenListJsonString()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 238 | |
| 239 | assertEquals(3, res.at("/meta/totalResults").asInt()); |
| Eliza Margaretha | 6f98920 | 2016-10-14 21:48:29 +0200 | [diff] [blame] | 240 | assertEquals("spanNext(base:s:a, base:s:b)", |
| 241 | res.at("/meta/serialQuery").asText()); |
| Akron | d504f21 | 2015-06-20 00:27:54 +0200 | [diff] [blame] | 242 | assertEquals(0, res.at("/meta/startIndex").asInt()); |
| 243 | assertEquals(25, res.at("/meta/itemsPerPage").asInt()); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 244 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 245 | assertEquals("doc-1", res.at("/matches/0/textSigle").asText()); |
| 246 | assertEquals(0, res.at("/matches/0/tokens/0/0").asInt()); |
| 247 | assertEquals(1, res.at("/matches/0/tokens/0/1").asInt()); |
| 248 | assertEquals(1, res.at("/matches/0/tokens/1/0").asInt()); |
| 249 | assertEquals(2, res.at("/matches/0/tokens/1/1").asInt()); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 250 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 251 | assertEquals("doc-1", res.at("/matches/1/textSigle").asText()); |
| 252 | assertEquals(2, res.at("/matches/1/tokens/0/0").asInt()); |
| 253 | assertEquals(3, res.at("/matches/1/tokens/0/1").asInt()); |
| 254 | assertEquals(3, res.at("/matches/1/tokens/1/0").asInt()); |
| 255 | assertEquals(4, res.at("/matches/1/tokens/1/1").asInt()); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 256 | |
| Nils Diewald | bbd39a5 | 2015-02-23 19:56:57 +0000 | [diff] [blame] | 257 | assertEquals("doc-2", res.at("/matches/2/textSigle").asText()); |
| 258 | assertEquals(0, res.at("/matches/2/tokens/0/0").asInt()); |
| 259 | assertEquals(1, res.at("/matches/2/tokens/0/1").asInt()); |
| 260 | assertEquals(1, res.at("/matches/2/tokens/1/0").asInt()); |
| 261 | assertEquals(2, res.at("/matches/2/tokens/1/1").asInt()); |
| Nils Diewald | 277e9ce | 2014-11-06 03:42:11 +0000 | [diff] [blame] | 262 | }; |
| Nils Diewald | 67f5404 | 2014-09-27 14:53:38 +0000 | [diff] [blame] | 263 | }; |