Updated relation PTIs in tests.
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
index 1411f60..7490dec 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/CandidateSpan.java
@@ -23,7 +23,9 @@
private int position;
private CandidateSpan childSpan; // used for example for multiple distance
// with unordered constraint
- protected short spanId;
+ protected short spanId;
+ protected boolean hasSpanId;
+
private short leftId, rightId;
private int leftStart, leftEnd;
private int rightStart, rightEnd;
@@ -50,9 +52,11 @@
if (span instanceof SimpleSpans) {
SimpleSpans temp = (SimpleSpans) span;
this.spanId = temp.getSpanId();
+ this.hasSpanId = temp.hasSpanId;
}
else if (span instanceof ClassSpans) {
this.spanId = ((ClassSpans) span).getNumber();
+ this.hasSpanId = true;
}
}
@@ -297,6 +301,8 @@
*/
public void setSpanId (short spanId) {
this.spanId = spanId;
+ if (spanId > 0)
+ this.hasSpanId = true;
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
index 6ec374e..b73f186 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/ElementSpans.java
@@ -121,6 +121,7 @@
// silently setting empty element and payload
this.matchEndPosition = this.matchStartPosition;
this.setSpanId((short) -1);
+ this.hasSpanId = false;
this.matchPayload = null;
return;
}
@@ -141,6 +142,7 @@
}
else {
this.setSpanId((short) -1);
+ this.hasSpanId = false;
}
// FIX ME
@@ -152,6 +154,7 @@
this.matchEndPosition = this.matchStartPosition;
this.setSpanId((short) -1);
+ this.hasSpanId = false;
this.matchPayload = null;
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
index 02d9656..72cfc82 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
@@ -127,8 +127,8 @@
this.matchEndPosition = cs.getEnd();
this.matchPayload = cs.getPayloads();
this.setRightStart(cs.getRightStart());
- this.setRightEnd(cs.getRightEnd());
- this.spanId = cs.getSpanId(); // relation id
+ this.setRightEnd(cs.getRightEnd());
+ this.spanId = cs.getSpanId(); // relation id
this.leftId = cs.getLeftId();
this.rightId = cs.getRightId();
candidateList.remove(0);
@@ -193,12 +193,22 @@
cs.setLeftEnd(cs.start + 1);
cs.setRightStart(i);
cs.setRightEnd(i + 1);
+ cs.setLeftId(bb.getShort(5)); // left id
+ cs.setRightId(bb.getShort(7)); // right id
+ if (length > 9) {
+ cs.setSpanId(bb.getShort(9)); // relation id
+ }
}
else if (payloadTypeIdentifier == PayloadTypeIdentifier.TERM_TO_ELEMENT.value) { // length
// 15
cs.setLeftEnd(cs.start + 1);
cs.setRightStart(bb.getInt(1));
cs.setRightEnd(bb.getInt(5));
+ cs.setLeftId(bb.getShort(9)); // left id
+ cs.setRightId(bb.getShort(11)); // right id
+ if (length > 13) {
+ cs.setSpanId(bb.getShort(13)); // relation id
+ }
}
else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_TERM.value) { // length
// 15
@@ -207,17 +217,26 @@
i = bb.getInt(5);
cs.setRightStart(i);
cs.setRightEnd(i + 1);
+ cs.setLeftId(bb.getShort(9)); // left id
+ cs.setRightId(bb.getShort(11)); // right id
+ if (length > 13) {
+ cs.setSpanId(bb.getShort(13)); // relation id
+ }
}
else if (payloadTypeIdentifier == PayloadTypeIdentifier.ELEMENT_TO_ELEMENT.value) {
+ // length 19
cs.setEnd(bb.getInt(1));
cs.setLeftEnd(cs.end);
cs.setRightStart(bb.getInt(5));
cs.setRightEnd(bb.getInt(9));
- }
+ cs.setLeftId(bb.getShort(13)); // left id
+ cs.setRightId(bb.getShort(15)); // right id
+ if (length > 17) {
+ cs.setSpanId(bb.getShort(17)); // relation id
+ }
+ }
- cs.setRightId(bb.getShort(length - 2)); //right id
- cs.setLeftId(bb.getShort(length - 4)); //left id
- cs.setSpanId(bb.getShort(length - 6)); //relation id
+
// Payload is cleared.
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
index c38b332..e58f59d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/SpansWithAttribute.java
@@ -238,8 +238,12 @@
*/
private boolean searchSpanPosition () throws IOException {
while (hasMoreSpans) {
- if (referentSpans.getSpanId() < 1) { // the element does not have an attribute
- hasMoreSpans = referentSpans.next();
+ // the element does not have an attribute
+ if (referentSpans.getSpanId() < 1) {
+ if (attributeList.size() == 0 || notAttributeList.size() > 0) {
+ return true;
+ }
+ hasMoreSpans = referentSpans.next();
continue;
}
if (checkAttributeListPosition()) {