Fixed pagebreak retrieval
Change-Id: Ic7fa5478606649a2a10614f3c89c24f6abbe6200
diff --git a/Changes b/Changes
index 90856b9..9ba81de 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,6 @@
+0.55.8 2017-02-15
+ - [feature] Retrieve and display pagebreaks (diewald)
+
0.55.7 2017-01-24
- [bugfix] Sorted results in unordered element distance query results (margaretha)
- [bugfix] Throw error on optional operands in distance
diff --git a/pom.xml b/pom.xml
index 7035a00..64a4e89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
<groupId>de.ids_mannheim.korap</groupId>
<artifactId>Krill</artifactId>
- <version>0.55.7</version>
+ <version>0.55.8</version>
<packaging>jar</packaging>
<name>Krill</name>
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index 29ac699..145ac6f 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -88,7 +88,7 @@
private static final int PB_MARKER = -99999;
// This advices the java compiler to ignore all loggings
- public static final boolean DEBUG = true;
+ public static final boolean DEBUG = false;
// Mapper for JSON serialization
ObjectMapper mapper = new ObjectMapper();
@@ -712,7 +712,8 @@
return this.retrievePagebreaks(
this.positionsToOffset.getLeafReader(),
(Bits) null,
- "tokens", pb
+ "tokens",
+ pb
);
};
@@ -729,8 +730,13 @@
// List of relevant pagebreaks
List<int[]> pagebreaks = new ArrayList<>(24);
- int charOffset = 0, pagenumber = 0;
-
+ int charOffset = 0, pagenumber = 0, start = 0;
+
+ if (DEBUG)
+ log.debug("Retrieve pagebreaks between {}-{}",
+ this.getStartPos(),
+ this.getEndPos());
+
try {
// Store character offsets in ByteBuffer
@@ -752,7 +758,9 @@
while (pagebreakSpans.next() == true) {
if (DEBUG) {
- log.debug("There is a pagebreak at {}", pagebreakSpans.doc());
+ log.debug("There is a pagebreak at {}/{}",
+ pagebreakSpans.doc(),
+ pagebreakSpans.start());
};
// Current pagebreak is not in the correct document
@@ -772,11 +780,12 @@
if (pagebreakSpans.start() <= this.getStartPos()) {
if (DEBUG)
- log.debug("PB start position is before at {}",
+ log.debug("PB start position is before match at {}",
pagebreakSpans.start());
// Only the first payload is relevant
b = pagebreakSpans.getPayload().iterator().next();
+ start = pagebreakSpans.start();
}
// This is the first pagebreak!
@@ -796,11 +805,18 @@
// This is the first pagebreak!
pagebreaks.add(new int[]{charOffset, pagenumber});
- this.addPagebreak(charOffset, pagenumber);
+ if (start >= this.getStartPos()) {
+
+ if (DEBUG)
+ log.debug("Add pagebreak to rendering: {}-{}",
+ charOffset,
+ pagenumber);
+ this.addPagebreak(charOffset, pagenumber);
+ };
}
// b wasn't used yet
- else if (pagebreakSpans.start() <= this.getEndPos()) {
+ if (pagebreakSpans.start() <= this.getEndPos()) {
// Set new pagebreak
// Only the first payload is relevant
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
index 7286436..296fc33 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/HighlightCombinator.java
@@ -17,7 +17,7 @@
private final static Logger log = LoggerFactory.getLogger(Match.class);
// This advices the java compiler to ignore all loggings
- public static final boolean DEBUG = true;
+ public static final boolean DEBUG = false;
private LinkedList<HighlightCombinatorElement> combine;
private Stack<Integer> balanceStack = new Stack<>();
@@ -137,7 +137,9 @@
// Last element is empty
else if (lastComb.type == 3) {
- System.err.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
+ log.error(
+ "The last element was empty -- and this is not correctly handled yet"
+ );
}
// combinator is either closing (??) or another opener
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index ee1dce7..2805e78 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -1,4 +1,4 @@
-# log4j.rootLogger = ERROR, stdout
+log4j.rootLogger = ERROR, stdout
# Queries:
# log4j.logger.de.ids_mannheim.korap.query.SpanNextQuery = TRACE, stdout
@@ -29,7 +29,7 @@
# Responses:
# log4j.logger.de.ids_mannheim.korap.server.Node = TRACE, stdout
-log4j.logger.de.ids_mannheim.korap.response.Match = TRACE, stdout
+# log4j.logger.de.ids_mannheim.korap.response.Match = TRACE, stdout
# Index:
# log4j.logger.de.ids_mannheim.korap.KrillIndex = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
index 288e672..9c303da 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
@@ -58,10 +58,12 @@
SpanQuery sq;
Result kr;
- /*
- sq = new SpanTermQuery(new Term("tokens", "s:c"));
+
+ sq = new SpanTermQuery(new Term("tokens", "s:c"));
kr = ki.search(sq, (short) 10);
-
+
+ assertEquals(2, kr.getMatch(0).getStartPos());
+ assertEquals(3, kr.getMatch(0).getEndPos());
assertEquals(528, kr.getMatch(0).getStartPage());
assertEquals(-1, kr.getMatch(0).getEndPage());
assertEquals(
@@ -85,7 +87,8 @@
"</span>"+
"</span>",
kr.getMatch(0).getSnippetHTML());
-*/
+
+ /*
QueryBuilder qb = new QueryBuilder("tokens");
sq = qb.seq().append(
@@ -102,7 +105,7 @@
kr = ki.search(sq, (short) 10);
assertEquals(528, kr.getMatch(0).getStartPage());
- assertEquals(-1, kr.getMatch(0).getEndPage());
+ assertEquals(529, kr.getMatch(0).getEndPage());
assertEquals(
"snippetHTML",
"<span class=\"context-left\"></span>"+
@@ -110,7 +113,7 @@
"<mark>"+
"<span class=\"pb\" data-after=\"528\"></span>"+
"abcab"+
- // "<span class=\"pb\" data-after=\"529\"></span>"+
+ "<span class=\"pb\" data-after=\"529\"></span>"+
"ca"+
"</mark>"+
"</span>"+
@@ -118,5 +121,6 @@
"bac"+
"</span>",
kr.getMatch(0).getSnippetHTML());
+ */
};
};