New feature: itemsPerResource
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
index 215c82a..023ad9a 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapSearch.java
@@ -285,10 +285,87 @@
KorapCollection kc = new KorapCollection(json);
kc.setIndex(ki);
assertEquals(7, kc.numberOf("documents"));
-
};
@Test
+ public void searchJSONitemsPerResource () throws IOException {
+
+ // Construct index
+ KorapIndex ki = new KorapIndex();
+ // Indexing test files
+ for (String i : new String[] {"00001", "00002", "00003", "00004", "00005", "00006", "02439"}) {
+ ki.addDocFile(
+ getClass().getResource("/wiki/" + i + ".json.gz").getFile(), true
+ );
+ };
+ ki.commit();
+
+ String json = getString(getClass().getResource("/queries/bsp-itemsPerResource.jsonld").getFile());
+
+ KorapSearch ks = new KorapSearch(json);
+ KorapResult kr = ks.run(ki);
+ assertEquals(10, kr.getTotalResults());
+ assertEquals(0, kr.getStartIndex());
+ assertEquals(20, kr.getItemsPerPage());
+
+ assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+ assertEquals("WPD_AAA.00001", kr.getMatch(1).getDocID());
+ assertEquals("WPD_AAA.00001", kr.getMatch(6).getDocID());
+ assertEquals("WPD_AAA.00002", kr.getMatch(7).getDocID());
+ assertEquals("WPD_AAA.00002", kr.getMatch(8).getDocID());
+ assertEquals("WPD_AAA.00004", kr.getMatch(9).getDocID());
+
+ ks = new KorapSearch(json);
+ ks.setItemsPerResource(1);
+
+ kr = ks.run(ki);
+
+ assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+ assertEquals("WPD_AAA.00002", kr.getMatch(1).getDocID());
+ assertEquals("WPD_AAA.00004", kr.getMatch(2).getDocID());
+
+ assertEquals(3, kr.getTotalResults());
+ assertEquals(0, kr.getStartIndex());
+ assertEquals(20, kr.getItemsPerPage());
+
+
+ ks = new KorapSearch(json);
+ ks.setItemsPerResource(2);
+
+ kr = ks.run(ki);
+
+ // System.err.println(kr.toJSON());
+
+ assertEquals("WPD_AAA.00001", kr.getMatch(0).getDocID());
+ assertEquals("WPD_AAA.00001", kr.getMatch(1).getDocID());
+ assertEquals("WPD_AAA.00002", kr.getMatch(2).getDocID());
+ assertEquals("WPD_AAA.00002", kr.getMatch(3).getDocID());
+ assertEquals("WPD_AAA.00004", kr.getMatch(4).getDocID());
+
+ assertEquals(5, kr.getTotalResults());
+ assertEquals(0, kr.getStartIndex());
+ assertEquals(20, kr.getItemsPerPage());
+
+
+ ks = new KorapSearch(json);
+ ks.setItemsPerResource(1);
+ ks.setStartIndex(1);
+ ks.setCount(1);
+
+ kr = ks.run(ki);
+
+ assertEquals("WPD_AAA.00002", kr.getMatch(0).getDocID());
+
+ assertEquals(3, kr.getTotalResults());
+ assertEquals(1, kr.getStartIndex());
+ assertEquals(1, kr.getItemsPerPage());
+
+ assertEquals((short) 1, kr.getItemsPerResource());
+ };
+
+
+
+ @Test
public void searchJSONCollection () throws IOException {
// Construct index
diff --git a/src/test/resources/queries/bsp-itemsPerResource.jsonld b/src/test/resources/queries/bsp-itemsPerResource.jsonld
new file mode 100644
index 0000000..d4be7fe
--- /dev/null
+++ b/src/test/resources/queries/bsp-itemsPerResource.jsonld
@@ -0,0 +1,21 @@
+{
+ "@context": "http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld",
+ "query": {
+ "@type": "korap:token",
+ "wrap": {
+ "@type": "korap:term",
+ "foundry": "mate",
+ "layer" : "lemma",
+ "key":"alphabet",
+ "match": "match:eq"
+ }
+ },
+ "meta":{
+ "startPage":1,
+ "count": 20,
+ "context":{
+ "left":["char",90],
+ "right":["char",90]
+ }
+ }
+}