Fixed startsWith bug
Change-Id: I7af0a6a932fbd14f0f15dad7ac178924e7acf883
diff --git a/Changes b/Changes
index fa5c8d6..e67a228 100644
--- a/Changes
+++ b/Changes
@@ -1,8 +1,9 @@
-0.55.5 2016-04-26
+0.55.5 2016-04-29
- [performance] Changed to a dynamic window for sorting in FocusSpans (margaretha)
-0.55.5 2016-04-25
- [bugfix] store skipped spans in Repetitionspans as candidates
(margaretha)
+ - [bugfix] Store lazy loading embedded spans for startsWith in
+ WithinSpans (diewald)
0.55.4 2016-04-22
- [bugfix] Wrap <base/s=t> boundaries around right extended queries
diff --git a/pom.xml b/pom.xml
index 22842ce..60dd27b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
<groupId>de.ids_mannheim.korap</groupId>
<artifactId>Krill</artifactId>
- <version>0.55.4</version>
+ <version>0.55.5</version>
<packaging>jar</packaging>
<name>Krill</name>
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
index 215dc85..31a0e12 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/WithinSpans.java
@@ -162,6 +162,7 @@
while (this.more && (wrapDoc == embeddedDoc ||
// this.inSameDoc ||
this.toSameDoc())) {
+
if (DEBUG)
log.trace("We are in the same doc: {}, {}", wrapDoc,
embeddedDoc);
@@ -219,6 +220,8 @@
// Forward with embedding
if (!this.embeddedSpans.next()) {
+
+ // TODO: May need storeEmpdedded
this.nextSpanA();
continue;
}
@@ -235,7 +238,7 @@
if (this.embeddedDoc != this.wrapDoc) {
if (DEBUG) {
- log.trace("Embedded span is in a new document {}",
+ log.trace("(A) Embedded span is in a new document {}",
_currentEmbedded().toString());
log.trace("Reset current embedded doc");
};
@@ -264,6 +267,12 @@
if (this.embeddedDoc != this.wrapDoc) {
+ if (DEBUG) {
+ log.trace("(B) Embedded span is in a new document {}",
+ _currentEmbedded().toString());
+ log.trace("Reset current embedded doc");
+ };
+
// Is this always a good idea?
/*
this.spanStore1.clear();
@@ -658,7 +667,7 @@
// Check if the current span constellation does match
// Store backtracking relevant data and say, how to proceed
- private boolean doesMatch () {
+ private boolean doesMatch () throws IOException {
if (DEBUG)
log.trace("In the match test branch");
@@ -690,8 +699,14 @@
else if (this.wrapStart < this.embeddedStart) {
// Can't match for sw and m and will always
// lead to next_a
+
if (flag >= STARTSWITH) {
+ if (DEBUG)
+ log.trace("Shortcut for lazy loading");
+
+ this.storeEmbedded();
this.nextSpanA();
+
if (DEBUG)
_logCurrentCase((byte) 15);
return false;
@@ -846,6 +861,10 @@
private void todo (byte currentCase) throws IOException {
+ if (DEBUG) {
+ log.trace("Check what to do next ...");
+ };
+
/*
Check what to do next with the spans.
@@ -881,6 +900,9 @@
this.nextSpanB();
}
else if (this.flag >= STARTSWITH) {
+
+ // TODO: May need storeEmbedded
+
this.nextSpanA();
}
else {
@@ -903,6 +925,7 @@
// Case 9, 10
(currentCase >= (byte) 9 && this.flag >= STARTSWITH)) {
+ // TODO: May need storeEmbedded
this.nextSpanA();
}
else {
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
index ce6dac3..cba0c3a 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWithinIndex.java
@@ -1075,11 +1075,15 @@
ki.addDoc(fd);
ki.commit();
+
assertEquals(1, ki.numberOf("documents"));
QueryBuilder qb = new KrillQuery("base").builder();
- SpanQueryWrapper sqw = qb.seg("i:x");
- Result kr = ki.search(sqw.toQuery(), (short) 10);
+ SpanQueryWrapper sqw;
+ Result kr;
+ /*
+ sqw = qb.seg("i:x");
+ kr = ki.search(sqw.toQuery(), (short) 10);
assertEquals(2, kr.getTotalResults());
sqw = qb.tag("a");
@@ -1091,7 +1095,7 @@
sqw.toQuery().toString());
kr = ki.search(sqw.toQuery(), (short) 10);
assertEquals(1, kr.getTotalResults());
-
+ */
sqw = qb.startswith(qb.tag("e"), qb.seg("i:h"));
assertEquals("spanStartsWith(<base:e />, base:i:h)",
sqw.toQuery().toString());