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