Fixed bug in segments with negated components
Change-Id: I520115e4c1fc2ab497c6b5d8a322c7ea54b0a97d
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index f6f1c74..abfc16e 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -1070,6 +1070,7 @@
for (JsonNode operand : operands) {
SpanQueryWrapper part = this._segFromJson(operand);
+
if (part instanceof SpanAlterQueryWrapper) {
ssegqw.with((SpanAlterQueryWrapper) part);
}
@@ -1347,7 +1348,7 @@
saqw.or(v);
};
- if (match.equals("match:ne")) {
+ if (match.equals("match:ne")) {
if (DEBUG)
log.trace("Term is negated");
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
index 4d1c712..cbc715b 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
@@ -119,9 +119,12 @@
public SpanSegmentQueryWrapper with (SpanAlterQueryWrapper alter) {
if (!alter.isNull()) {
- if (alter.isNegative())
- this.isNegative = true;
- this.inclusive.add(alter);
+ if (alter.isNegative()) {
+ this.exclusive.add(alter);
+ }
+ else {
+ this.inclusive.add(alter);
+ };
this.isNull = false;
};
return this;
@@ -167,18 +170,14 @@
public SpanSegmentQueryWrapper without (SpanAlterQueryWrapper alter) {
- if (!alter.isNull()) {
- if (alter.isNegative()) {
- this.inclusive.add(alter);
- }
- else {
- this.exclusive.add(alter);
- };
- this.isNull = false;
- };
- return this;
+ if (alter.isNegative()) {
+ alter.setNegative(false);
+ } else {
+ alter.setNegative(true);
+ }
+ return this.with(alter);
};
-
+
public SpanSegmentQueryWrapper without (SpanSegmentQueryWrapper seg) {
if (!seg.isNull()) {