Rename SpanQuantifierQuery to SpanRepetitionQuery,
update SpanDistanceQuery to use DistanceConstraint
diff --git a/src/main/java/de/ids_mannheim/korap/query/DistanceConstraint.java b/src/main/java/de/ids_mannheim/korap/query/DistanceConstraint.java
index 29e191a..9a92307 100644
--- a/src/main/java/de/ids_mannheim/korap/query/DistanceConstraint.java
+++ b/src/main/java/de/ids_mannheim/korap/query/DistanceConstraint.java
@@ -1,6 +1,7 @@
package de.ids_mannheim.korap.query;
-/** Create a distance constraint for multiple distance query.
+/** Specify constraints of distance in SpanDistanceQueries or
+ * SpanMultipleDistanceQueries
*
* @author margaretha
* */
@@ -10,23 +11,43 @@
private String unit;
private SpanElementQuery elementQuery;
private boolean exclusion;
+ private boolean isOrdered;
- public DistanceConstraint(int min, int max, boolean exclusion) {
+ public DistanceConstraint(int min, int max, boolean isOrdered, boolean exclusion) {
this.unit = "w";
this.minDistance = min;
this.maxDistance = max;
- this.exclusion = exclusion;
+ this.isOrdered = isOrdered;
+ this.exclusion = exclusion;
}
- public DistanceConstraint(SpanElementQuery elementQuery, int min, int max,
- boolean exclusion) {
+ public DistanceConstraint(SpanElementQuery elementQuery, int min, int max, boolean
+ isOrdered, boolean exclusion) {
this.unit = elementQuery.getElementStr();
this.minDistance = min;
this.maxDistance = max;
- this.exclusion = exclusion;
- this.elementQuery = elementQuery;
+ this.isOrdered = isOrdered;
+ this.exclusion = exclusion;
+ this.elementQuery = elementQuery;
}
+
+// public DistanceConstraint(int min, int max, boolean exclusion) {
+// this.unit = "w";
+// this.minDistance = min;
+// this.maxDistance = max;
+// this.exclusion = exclusion;
+// }
+//
+// public DistanceConstraint(SpanElementQuery elementQuery, int min, int max,
+// boolean exclusion) {
+// this.unit = elementQuery.getElementStr();
+// this.minDistance = min;
+// this.maxDistance = max;
+// this.exclusion = exclusion;
+// this.elementQuery = elementQuery;
+// }
+
public int getMinDistance() {
return minDistance;
}
@@ -59,4 +80,12 @@
public void setExclusion(boolean exclusion) {
this.exclusion = exclusion;
}
+
+ public boolean isOrdered() {
+ return isOrdered;
+ }
+
+ public void setOrdered(boolean isOrdered) {
+ this.isOrdered = isOrdered;
+ }
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanDistanceQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanDistanceQuery.java
index 7ce869a..6b01fdb 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanDistanceQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanDistanceQuery.java
@@ -34,32 +34,50 @@
private SpanElementQuery elementQuery; // element distance unit
private String distanceUnit;
private String spanName;
+ private DistanceConstraint constraint;
public SpanDistanceQuery(SpanQuery firstClause, SpanQuery secondClause,
- int minDistance, int maxDistance, boolean isOrdered,
- boolean collectPayloads) {
- super(firstClause, secondClause, collectPayloads);
- init(minDistance, maxDistance, isOrdered);
- distanceUnit = "w";
- spanName = "spanDistance";
- }
-
- public SpanDistanceQuery(SpanElementQuery elementQuery, SpanQuery firstClause,
- SpanQuery secondClause, int minDistance, int maxDistance,
- boolean isOrdered, boolean collectPayloads) {
+ DistanceConstraint constraint, boolean collectPayloads) {
super(firstClause, secondClause, collectPayloads);
- init(minDistance, maxDistance, isOrdered);
- this.elementQuery = elementQuery;
- distanceUnit = elementQuery.getElementStr();
- spanName = "spanElementDistance";
+ this.constraint = constraint;
+ this.minDistance = constraint.getMinDistance();
+ this.maxDistance = constraint.getMaxDistance();
+ this.isOrdered = constraint.isOrdered();
+ this.exclusion = constraint.isExclusion();
+ this.distanceUnit = constraint.getUnit();
+
+ if (constraint.getElementQuery() != null){
+ spanName = "spanElementDistance";
+ this.elementQuery = constraint.getElementQuery();
+ }
+ else { spanName = "spanDistance"; }
}
- private void init(int minDistance, int maxDistance,boolean isOrdered){
- this.minDistance = minDistance;
- this.maxDistance = maxDistance;
- this.isOrdered = isOrdered;
- this.exclusion = false;
- }
+// public SpanDistanceQuery(SpanQuery firstClause, SpanQuery secondClause,
+// int minDistance, int maxDistance, boolean isOrdered,
+// boolean collectPayloads) {
+// super(firstClause, secondClause, collectPayloads);
+// init(minDistance, maxDistance, isOrdered);
+// distanceUnit = "w";
+// spanName = "spanDistance";
+// }
+//
+// public SpanDistanceQuery(SpanElementQuery elementQuery, SpanQuery firstClause,
+// SpanQuery secondClause, int minDistance, int maxDistance,
+// boolean isOrdered, boolean collectPayloads) {
+// super(firstClause, secondClause, collectPayloads);
+// init(minDistance, maxDistance, isOrdered);
+// this.elementQuery = elementQuery;
+// distanceUnit = elementQuery.getElementStr();
+// spanName = "spanElementDistance";
+// }
+//
+// private void init(int minDistance, int maxDistance,boolean isOrdered){
+// this.minDistance = minDistance;
+// this.maxDistance = maxDistance;
+// this.isOrdered = isOrdered;
+// this.exclusion = false;
+// }
@Override
public String toString(String field) {
@@ -84,20 +102,17 @@
}
@Override
- public SpanDistanceQuery clone() {
+ public SpanDistanceQuery clone() {
SpanDistanceQuery spanDistanceQuery = new SpanDistanceQuery(
(SpanQuery) firstClause.clone(),
(SpanQuery) secondClause.clone(),
- this.minDistance,
- this.maxDistance,
- this.isOrdered,
+ this.constraint,
this.collectPayloads
);
if (this.elementQuery != null) {
spanDistanceQuery.setElementQuery(this.elementQuery);
}
- spanDistanceQuery.setExclusion(this.exclusion);
spanDistanceQuery.setBoost(getBoost());
return spanDistanceQuery;
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanMultipleDistanceQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanMultipleDistanceQuery.java
index 473e9c6..43cff3f 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanMultipleDistanceQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanMultipleDistanceQuery.java
@@ -72,7 +72,7 @@
sb.append(":");
sb.append(c.getMaxDistance());
sb.append("], ");
- sb.append(isOrdered ? "ordered, " : "notOrdered, ");
+ sb.append(c.isOrdered() ? "ordered, " : "notOrdered, ");
sb.append(c.isExclusion() ? "excluded)]" : "notExcluded)");
if (i < size-1) sb.append(", ");
}
@@ -89,18 +89,17 @@
public Spans getSpans(AtomicReaderContext context, Bits acceptDocs,
Map<Term, TermContext> termContexts) throws IOException {
- DistanceConstraint c;
SpanDistanceQuery sdq,sdq2;
Spans ds,ds2;
MultipleDistanceSpans mds = null;
boolean exclusion;
-
- c = constraints.get(0);
- sdq = createSpanDistanceQuery(c);
+
+ sdq = new SpanDistanceQuery(firstClause, secondClause, constraints.get(0), collectPayloads);
ds = sdq.getSpans(context, acceptDocs, termContexts);
for (int i=1; i< constraints.size(); i++){
- sdq2 = createSpanDistanceQuery(constraints.get(i));
+ sdq2 = new SpanDistanceQuery(firstClause, secondClause, constraints.get(i),
+ collectPayloads);
ds2 = sdq2.getSpans(context, acceptDocs, termContexts);
exclusion = sdq.isExclusion() && sdq2.isExclusion();
@@ -110,26 +109,7 @@
}
return mds;
- }
-
- /** Create a SpanDistanceQuery based on the given constraint.
- * @return a SpanDistanceQuery
- * */
- private SpanDistanceQuery createSpanDistanceQuery(DistanceConstraint c) {
- SpanDistanceQuery sdq;
- if (c.getUnit().equals("w")){
- sdq = new SpanDistanceQuery(firstClause, secondClause,
- c.getMinDistance(), c.getMaxDistance(),isOrdered,
- collectPayloads);
- }
- else {
- sdq = new SpanDistanceQuery(c.getElementQuery(), firstClause,
- secondClause, c.getMinDistance(), c.getMaxDistance(),
- isOrdered, collectPayloads);
- }
- sdq.setExclusion(c.isExclusion());
- return sdq;
- }
+ }
public List<DistanceConstraint> getConstraints() {
return constraints;
diff --git a/src/main/java/de/ids_mannheim/korap/query/SpanQuantifierQuery.java b/src/main/java/de/ids_mannheim/korap/query/SpanRepetitionQuery.java
similarity index 82%
rename from src/main/java/de/ids_mannheim/korap/query/SpanQuantifierQuery.java
rename to src/main/java/de/ids_mannheim/korap/query/SpanRepetitionQuery.java
index 85b881b..e25e5fe 100644
--- a/src/main/java/de/ids_mannheim/korap/query/SpanQuantifierQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/query/SpanRepetitionQuery.java
@@ -11,13 +11,13 @@
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.ToStringUtils;
-import de.ids_mannheim.korap.query.spans.QuantifierSpans;
+import de.ids_mannheim.korap.query.spans.RepetitionSpans;
-public class SpanQuantifierQuery extends SimpleSpanQuery{
+public class SpanRepetitionQuery extends SimpleSpanQuery{
private int min, max;
- public SpanQuantifierQuery(SpanQuery sq, int min, int max,
+ public SpanRepetitionQuery(SpanQuery sq, int min, int max,
boolean collectPayloads) {
super(sq, collectPayloads);
this.min = min;
@@ -26,7 +26,7 @@
@Override
public SimpleSpanQuery clone() {
- SpanQuantifierQuery sq = new SpanQuantifierQuery(
+ SpanRepetitionQuery sq = new SpanRepetitionQuery(
(SpanQuery) this.firstClause.clone(),
this.min,
this.max,
@@ -38,7 +38,7 @@
@Override
public Spans getSpans(AtomicReaderContext context, Bits acceptDocs,
Map<Term, TermContext> termContexts) throws IOException {
- return new QuantifierSpans(this, context, acceptDocs, termContexts);
+ return new RepetitionSpans(this, context, acceptDocs, termContexts);
}
@Override
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/QuantifierSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
similarity index 92%
rename from src/main/java/de/ids_mannheim/korap/query/spans/QuantifierSpans.java
rename to src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
index 8c99ac0..923debc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/QuantifierSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RepetitionSpans.java
@@ -13,16 +13,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import de.ids_mannheim.korap.query.SpanQuantifierQuery;
+import de.ids_mannheim.korap.query.SpanRepetitionQuery;
-public class QuantifierSpans extends SimpleSpans{
+public class RepetitionSpans extends SimpleSpans{
private int min,max;
private long matchCost;
private List<CandidateSpan> matchList;
- private Logger log = LoggerFactory.getLogger(QuantifierSpans.class);
+ private Logger log = LoggerFactory.getLogger(RepetitionSpans.class);
- public QuantifierSpans(SpanQuantifierQuery query,
+ public RepetitionSpans(SpanRepetitionQuery query,
AtomicReaderContext context, Bits acceptDocs,
Map<Term, TermContext> termContexts)
throws IOException {
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/UnorderedElementDistanceSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/UnorderedElementDistanceSpans.java
index b9ed42c..a0c4474 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/UnorderedElementDistanceSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/UnorderedElementDistanceSpans.java
@@ -197,7 +197,7 @@
}
if (minDistance <= actualDistance && actualDistance <= maxDistance)
- matches.add(createMatchCandidate(target, cs, false));
+ matches.add(createMatchCandidate(target, cs, false));
}
return matches;
}
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
index abf2ae4..5e1c91e 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
@@ -96,7 +96,7 @@
public SpanSequenceQueryWrapper withConstraint (int min, int max, boolean exclusion) {
if (this.constraints == null)
this.constraints = new ArrayList<DistanceConstraint>(1);
- this.constraints.add(new DistanceConstraint(min, max, exclusion));
+ this.constraints.add(new DistanceConstraint(min, max, isInOrder, exclusion));
return this;
};
@@ -111,11 +111,11 @@
if (this.constraints == null)
this.constraints = new ArrayList<DistanceConstraint>(1);
if (unit.equals("w"))
- this.constraints.add(new DistanceConstraint(min, max, exclusion));
+ this.constraints.add(new DistanceConstraint(min, max, isInOrder, exclusion));
else
this.constraints.add(
new DistanceConstraint(
- new SpanElementQuery(this.field, unit), min, max, exclusion)
+ new SpanElementQuery(this.field, unit), min, max, isInOrder, exclusion)
);
return this;
};
@@ -150,15 +150,11 @@
if (!constraint.getUnit().equals("w")) {
for (int i = 1; i < this.segments.size(); i++) {
SpanDistanceQuery sdquery = new SpanDistanceQuery(
- new SpanElementQuery(this.field, constraint.getUnit()),
- query,
- this.segments.get(i),
- constraint.getMinDistance(),
- constraint.getMaxDistance(),
- this.isInOrder(),
- true
+ query,
+ this.segments.get(i),
+ constraint,
+ true
);
- sdquery.setExclusion(constraint.isExclusion());
query = (SpanQuery) sdquery;
};
}
@@ -169,12 +165,9 @@
SpanDistanceQuery sdquery = new SpanDistanceQuery(
query,
this.segments.get(i),
- constraint.getMinDistance(),
- constraint.getMaxDistance(),
- this.isInOrder(),
+ constraint,
true
);
- sdquery.setExclusion(constraint.isExclusion());
query = (SpanQuery) sdquery;
};
};
@@ -188,7 +181,7 @@
query,
this.segments.get(i),
this.constraints,
- this.isInOrder(),
+ isInOrder,
true
);
};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestDistanceExclusionIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestDistanceExclusionIndex.java
index 1ff0b64..8505452 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestDistanceExclusionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestDistanceExclusionIndex.java
@@ -11,6 +11,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
@@ -107,9 +108,9 @@
SpanDistanceQuery sq;
sq = new SpanDistanceQuery(
new SpanElementQuery("base", "x"),
- new SpanElementQuery("base", "y")
- ,0,1,false,true);
- sq.setExclusion(true);
+ new SpanElementQuery("base", "y"),
+ new DistanceConstraint(0, 1, false, true),
+ true);
kr = ki.search(sq, (short) 10);
assertEquals(1, kr.getTotalResults());
@@ -130,12 +131,9 @@
SpanDistanceQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
new SpanTermQuery(new Term("base",y)),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered,true),
true
- );
- sq.setExclusion(true);
+ );
return sq;
}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestDistanceIndex.java
index 2273881..b124eff 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestDistanceIndex.java
@@ -13,6 +13,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanSegmentQuery;
@@ -68,13 +69,11 @@
return fd;
}
- private SpanQuery createQuery(String x, String y, int min, int max, boolean isOrdered){
+ private SpanQuery createQuery(String x, String y, int min, int max, boolean isOrdered){
SpanQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
new SpanTermQuery(new Term("base",y)),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered, false),
true
);
return sq;
@@ -84,9 +83,7 @@
SpanQuery sq = new SpanDistanceQuery(
new SpanElementQuery("base",x),
new SpanElementQuery("base",y),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered, false),
true
);
return sq;
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceExclusionIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceExclusionIndex.java
index 49c1906..a1ffecf 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceExclusionIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceExclusionIndex.java
@@ -11,6 +11,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
@@ -22,16 +23,13 @@
private SpanQuery createQuery(String e, String x, String y, int min, int max, boolean isOrdered,
boolean exclusion){
- SpanDistanceQuery sq = new SpanDistanceQuery(
- new SpanElementQuery("base",e),
+ SpanElementQuery eq = new SpanElementQuery("base",e);
+ SpanDistanceQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
new SpanTermQuery(new Term("base",y)),
- min,
- max,
- isOrdered,
- true
+ new DistanceConstraint(eq, min, max, isOrdered, exclusion),
+ true
);
- sq.setExclusion(exclusion);
return sq;
}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
index 231e2eb..d8aed3d 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
@@ -12,8 +12,8 @@
import org.junit.runners.JUnit4;
import de.ids_mannheim.korap.KorapIndex;
-import de.ids_mannheim.korap.KorapQuery;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
@@ -82,14 +82,13 @@
}
public SpanQuery createQuery(String elementType, String x, String y,
- int minDistance, int maxDistance, boolean isOrdered){
- return new SpanDistanceQuery(
- new SpanElementQuery("base", elementType),
+ int min, int max, boolean isOrdered){
+
+ SpanElementQuery e = new SpanElementQuery("base", elementType);
+ return new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
new SpanTermQuery(new Term("base",y)),
- minDistance,
- maxDistance,
- isOrdered,
+ new DistanceConstraint( e, min, max, isOrdered, false),
true);
}
@@ -184,50 +183,5 @@
assertEquals(5, kr.match(1).endPos);
}
-
- @Test
- public void testCase5() throws IOException{
- ki = new KorapIndex();
- ki.addDocFile(getClass().getResource("/a00/SEP-62389.json.gz").getFile(), true);
- ki.commit();
-// KorapQuery kq = new KorapQuery("tokens");
- SpanQuery sq = new SpanElementQuery("tokens", "s");
-// //kq.seq(kq.tag("s"), kq.tag("s")).toQuery();
-// System.out.println(sq.toString());
- //assertEquals("spanNext(<tokens:xip/c:VERB />, <tokens:xip/c:DET />)", sq.toString());
- kr = ki.search(sq, (short) 100);
-
-
-// for (int i=0; i< kr.getTotalResults(); i++){
-// System.out.println(
-// kr.match(i).getLocalDocID()+" "+
-// kr.match(i).startPos + " " +
-// kr.match(i).endPos
-// );
-// }
- //System.out.println(sq.toString());
- sq = new SpanDistanceQuery(
- new SpanElementQuery("tokens", "s"),
- new SpanTermQuery(new Term("tokens","s:weg")),
- new SpanTermQuery(new Term("tokens","s:fahren")),
- 1,
- 1,
- false,
- true
- );
- kr = ki.search(sq, (short) 10);
-
-
- /* System.out.print(kr.getTotalResults()+"\n");
- for (int i=0; i< kr.getTotalResults(); i++){
- System.out.println(
- kr.match(i).getLocalDocID()+" "+
- kr.match(i).startPos + " " +
- kr.match(i).endPos
- );
- }*/
-
- }
-
}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMultipleDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestMultipleDistanceIndex.java
index 2136f9c..038b157 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMultipleDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMultipleDistanceIndex.java
@@ -36,12 +36,14 @@
return new SpanMultipleDistanceQuery(sx, sy, constraints, isOrdered, true);
}
- public DistanceConstraint createConstraint(String unit, int min, int max){
+ public DistanceConstraint createConstraint(String unit, int min, int max,
+ boolean isOrdered, boolean exclusion){
+
if (unit.equals("w")){
- return new DistanceConstraint(min, max,false);
+ return new DistanceConstraint(min, max,isOrdered,exclusion);
}
return new DistanceConstraint(new SpanElementQuery("base", unit),
- min, max,false);
+ min, max, isOrdered, exclusion);
}
private FieldDocument createFieldDoc0() {
@@ -111,11 +113,11 @@
ki.commit();
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(createConstraint("w", 0, 2));
- constraints.add(createConstraint("s", 0, 0));
+ constraints.add(createConstraint("w", 0, 2, false, false));
+ constraints.add(createConstraint("s", 0, 0, false, false));
SpanQuery mdq;
- mdq = createQuery("s:b", "s:c", constraints, false);
+ mdq = createQuery("s:b", "s:c", constraints,false);
kr = ki.search(mdq, (short) 10);
// System.out.println(mdq);
@@ -139,37 +141,43 @@
ki.addDoc(createFieldDoc0());
ki.commit();
+ // Ordered - two constraints
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(createConstraint("w", 0, 2));
- constraints.add(createConstraint("s", 1, 1));
+ constraints.add(createConstraint("w", 0, 2, true, false));
+ constraints.add(createConstraint("s", 1, 1, true, false));
- SpanQuery mdq;
- // Ordered
- mdq = createQuery("s:b", "s:c", constraints, true);
- kr = ki.search(mdq, (short) 10);
-
+ SpanQuery mdq;
+ mdq = createQuery("s:b", "s:c", constraints,true);
+ kr = ki.search(mdq, (short) 10);
assertEquals(3, kr.getTotalResults());
assertEquals(0, kr.getMatch(0).getStartPos());
assertEquals(3, kr.getMatch(0).getEndPos());
assertEquals(1, kr.getMatch(1).getStartPos());
assertEquals(3, kr.getMatch(1).getEndPos());
assertEquals(3, kr.getMatch(2).getStartPos());
- assertEquals(5, kr.getMatch(2).getEndPos());
-
- // Unordered
- mdq = createQuery("s:c", "s:b", constraints, false);
+ assertEquals(5, kr.getMatch(2).getEndPos());
+
+ // Three constraints
+ constraints.add(createConstraint("p", 0, 0, true, false));
+ mdq = createQuery("s:b", "s:c", constraints,true);
+ kr = ki.search(mdq, (short) 10);
+ assertEquals(2, kr.getTotalResults());
+
+
+ // Unordered - two constraints
+ constraints.clear();
+ constraints.add(createConstraint("w", 0, 2, false, false));
+ constraints.add(createConstraint("s", 1, 1, false, false));
+
+ mdq = createQuery("s:c", "s:b", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(4, kr.getTotalResults());
assertEquals(1, kr.getMatch(2).getStartPos());
assertEquals(4, kr.getMatch(2).getEndPos());
-
- // Three constraints
- constraints.add(createConstraint("p", 0, 0));
- mdq = createQuery("s:b", "s:c", constraints, true);
- kr = ki.search(mdq, (short) 10);
- assertEquals(2, kr.getTotalResults());
- mdq = createQuery("s:b", "s:c", constraints, false);
+ // Three constraints
+ constraints.add(createConstraint("p", 0, 0, false, false));
+ mdq = createQuery("s:b", "s:c", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(3, kr.getTotalResults());
@@ -187,11 +195,11 @@
ki.commit();
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(createConstraint("w", 1, 2));
- constraints.add(createConstraint("s", 1, 2));
+ constraints.add(createConstraint("w", 1, 2, false, false));
+ constraints.add(createConstraint("s", 1, 2, false, false));
SpanQuery mdq;
- mdq = createQuery("s:b", "s:e", constraints, false);
+ mdq = createQuery("s:b", "s:e", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(5, kr.getTotalResults());
@@ -228,11 +236,11 @@
ki.commit();
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(createConstraint("w", 1, 2));
- constraints.add(createConstraint("s", 1, 2));
+ constraints.add(createConstraint("w", 1, 2, false, false));
+ constraints.add(createConstraint("s", 1, 2, false, false));
SpanQuery mdq;
- mdq = createQuery("s:b", "s:c", constraints, false);
+ mdq = createQuery("s:b", "s:c", constraints,false);
SpanQuery sq = new SpanNextQuery(mdq,
new SpanTermQuery(new Term("base","s:e")));
@@ -257,11 +265,11 @@
ki.commit();
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(createConstraint("w", 1, 2));
- constraints.add(createConstraint("s", 1, 2));
+ constraints.add(createConstraint("w", 1, 2, false, false));
+ constraints.add(createConstraint("s", 1, 2, false, false));
SpanQuery mdq;
- mdq = createQuery("s:c", "s:c", constraints, false);
+ mdq = createQuery("s:c", "s:c", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(4, kr.getTotalResults());
@@ -289,26 +297,28 @@
// First constraint - token exclusion
SpanQuery sx = new SpanTermQuery(new Term("base","s:b"));
SpanQuery sy = new SpanTermQuery(new Term("base","s:c"));
- SpanDistanceQuery sq = new SpanDistanceQuery(sx, sy, 0, 1, false, true);
- sq.setExclusion(true);
+
+ DistanceConstraint dc1 = createConstraint("w", 0, 1, false, true);
+ SpanDistanceQuery sq = new SpanDistanceQuery(sx, sy, dc1, true);
kr = ki.search(sq, (short) 10);
assertEquals(1, kr.getTotalResults());
// 4-5
// Second constraint - element distance
- sq = new SpanDistanceQuery(new SpanElementQuery("base", "s"), sx,
- sy, 1, 1, false, true);
+ DistanceConstraint dc2 = createConstraint("s", 1, 1, false, false);
+ sq = new SpanDistanceQuery(sx, sy, dc2, true);
kr = ki.search(sq, (short) 10);
// 0-3, 1-3, 1-4, 1-5, 3-7, 4-7
assertEquals(6, kr.getTotalResults());
+
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(new DistanceConstraint(0, 1,true));
- constraints.add(createConstraint("s", 1, 1));
+ constraints.add(dc1);
+ constraints.add(dc2);
SpanQuery mdq;
- mdq = createQuery("s:b", "s:c", constraints, false);
+ mdq = createQuery("s:b", "s:c", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(2, kr.getTotalResults());
@@ -320,7 +330,6 @@
/** Exclusion, multiple documents
- * wait for element distance exclusion
* */
@Test
public void testCase7() throws IOException {
@@ -331,36 +340,38 @@
SpanQuery sx = new SpanTermQuery(new Term("base","s:b"));
SpanQuery sy = new SpanTermQuery(new Term("base","s:c"));
// Second constraint
- SpanDistanceQuery sq = new SpanDistanceQuery(new SpanElementQuery("base", "s"), sx,
- sy, 0, 0, false, true);
- sq.setExclusion(true);
- kr = ki.search(sq, (short) 10);
+ SpanDistanceQuery sq = new SpanDistanceQuery(sx,sy,
+ createConstraint("s", 0, 0, false, true),
+ true);
+ kr = ki.search(sq, (short) 10);
+ assertEquals(3, kr.getTotalResults());
// 0-1, 1-2, 6-7
+ // Exclusion within the same sentence
List<DistanceConstraint> constraints = new ArrayList<DistanceConstraint>();
- constraints.add(new DistanceConstraint(0, 2,true));
- constraints.add(new DistanceConstraint(new SpanElementQuery("base", "s"),
- 0, 0,true));
-
+ constraints.add(createConstraint("w", 0, 2,false,true));
+ constraints.add(createConstraint("s", 0, 0,false,true));
+
SpanQuery mdq;
- mdq = createQuery("s:b", "s:c", constraints, false);
- kr = ki.search(mdq, (short) 10);
-
+ mdq = createQuery("s:b", "s:c", constraints,false);
+ kr = ki.search(mdq, (short) 10);
assertEquals(2, kr.getTotalResults());
assertEquals(0, kr.getMatch(0).getStartPos());
assertEquals(1, kr.getMatch(0).getEndPos());
assertEquals(6, kr.getMatch(1).getStartPos());
assertEquals(7, kr.getMatch(1).getEndPos());
+
// Third constraint
- sq = new SpanDistanceQuery(new SpanElementQuery("base", "p"), sx,
- sy, 0, 0, false, true);
- sq.setExclusion(true);
+ sq = new SpanDistanceQuery(sx, sy,
+ createConstraint("p", 0, 0, false, true),
+ true);
+ kr = ki.search(sq, (short) 10);
+ assertEquals(1, kr.getTotalResults());
// 6-7
- constraints.add(new DistanceConstraint(new SpanElementQuery("base", "p"),
- 0, 0,true));
- mdq = createQuery("s:b", "s:c", constraints, false);
+ constraints.add(createConstraint("p", 0, 0, false, true));
+ mdq = createQuery("s:b", "s:c", constraints,false);
kr = ki.search(mdq, (short) 10);
assertEquals(1, kr.getTotalResults());
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestQuantifierIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
similarity index 92%
rename from src/test/java/de/ids_mannheim/korap/index/TestQuantifierIndex.java
rename to src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
index d07718e..02df26c 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestQuantifierIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRepetitionIndex.java
@@ -13,9 +13,9 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.query.SpanNextQuery;
-import de.ids_mannheim.korap.query.SpanQuantifierQuery;
+import de.ids_mannheim.korap.query.SpanRepetitionQuery;
-public class TestQuantifierIndex {
+public class TestRepetitionIndex {
private KorapIndex ki;
private KorapResult kr;
@@ -91,7 +91,7 @@
SpanQuery sq, sq2;
// Quantifier only
- sq = new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:c")),1,2, true);
+ sq = new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:c")),1,2, true);
kr = ki.search(sq, (short) 10);
// 0-1, 2-3, 2-4, 3-4, 5-6
assertEquals(5,kr.getTotalResults());
@@ -99,7 +99,7 @@
// ec{1,2}
sq = new SpanNextQuery(
new SpanTermQuery(new Term("base", "s:e")),
- new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:c")),1,2, true)
+ new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:c")),1,2, true)
);
kr = ki.search(sq, (short) 10);
@@ -133,14 +133,14 @@
ki.commit();
SpanQuery sq;
- sq = new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:c")),2,2, true);
+ sq = new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:c")),2,2, true);
kr = ki.search(sq, (short) 10);
assertEquals(4,kr.getTotalResults());
kr = ki.search(sq, (short) 10);
sq = new SpanNextQuery(
new SpanTermQuery(new Term("base", "s:e")),
- new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:c")),2,2, true)
+ new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:c")),2,2, true)
);
kr = ki.search(sq, (short) 10);
@@ -161,8 +161,8 @@
sq = new SpanNextQuery(
new SpanTermQuery(new Term("base", "s:e")),
new SpanOrQuery(
- new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:c")),1,1, true),
- new SpanQuantifierQuery(new SpanTermQuery(new Term("base","s:b")),1,1, true)
+ new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:c")),1,1, true),
+ new SpanRepetitionQuery(new SpanTermQuery(new Term("base","s:b")),1,1, true)
)
);
kr = ki.search(sq, (short) 10);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestUnorderedDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestUnorderedDistanceIndex.java
index 5ef1c96..b9f7065 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestUnorderedDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestUnorderedDistanceIndex.java
@@ -13,6 +13,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
@@ -79,9 +80,7 @@
SpanQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
new SpanTermQuery(new Term("base",y)),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered, false),
true
);
return sq;
@@ -92,9 +91,7 @@
SpanQuery sq = new SpanDistanceQuery(
new SpanElementQuery("base",x),
new SpanElementQuery("base",y),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered, false),
true
);
return sq;
@@ -135,8 +132,7 @@
SpanQuery sq = createQuery("s:c","s:d",1,2,false);
kr = ki.search(sq, (short) 10);
- assertEquals(6, kr.totalResults());
-
+ assertEquals(6, kr.totalResults());
}
/** Multiple documents
@@ -265,12 +261,17 @@
SpanQuery sq2 = new SpanDistanceQuery(
sq,
new SpanTermQuery(new Term("base","s:e")),
- 1,
- 2,
- false,
+ new DistanceConstraint(1, 2, true, false),
true);
kr = ki.search(sq2, (short) 10);
- //assertEquals(3, kr.totalResults());
+ assertEquals(3, kr.totalResults());
+ assertEquals(5, kr.getMatch(0).getStartPos());
+ assertEquals(9, kr.getMatch(0).getEndPos());
+ assertEquals(1, kr.getMatch(1).getLocalDocID());
+ assertEquals(0, kr.getMatch(1).getStartPos());
+ assertEquals(3, kr.getMatch(1).getEndPos());
+ assertEquals(0, kr.getMatch(2).getStartPos());
+ assertEquals(4, kr.getMatch(2).getEndPos());
}
@Test
@@ -287,9 +288,7 @@
SpanQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("tokens","s:in")),
new SpanTermQuery(new Term("tokens","s:horrendem")),
- 0,
- 2,
- false,
+ new DistanceConstraint(0, 2, false, false),
true
);
kr = ki.search(sq, (short) 10);
@@ -305,6 +304,8 @@
assertEquals(73, kr.getMatch(2).endPos);
}
+ /** Multiple NextSpans in the same first span position
+ * */
@Test
public void testCase9() throws IOException{
ki = new KorapIndex();
@@ -315,16 +316,7 @@
createQuery("s:c","s:e",1,2,false)
);
kr = ki.search(sq, (short) 10);
-//
-// System.out.print(kr.getTotalResults()+"\n");
-// for (int i=0; i< kr.getTotalResults(); i++){
-// System.out.println(
-// kr.match(i).getLocalDocID()+" "+
-// kr.match(i).startPos + " " +
-// kr.match(i).endPos
-// );
-// }
-
+
assertEquals(3, kr.totalResults());
assertEquals(0,kr.getMatch(1).getStartPos());
assertEquals(4,kr.getMatch(1).getEndPos());
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java
index fc9793c..952c325 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java
@@ -13,6 +13,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
@@ -93,14 +94,12 @@
}
public SpanQuery createQuery(String elementType, String x, String y,
- int minDistance, int maxDistance, boolean isOrdered){
- return new SpanDistanceQuery(
- new SpanElementQuery("base", elementType),
+ int minDistance, int maxDistance, boolean isOrdered){
+ SpanElementQuery e = new SpanElementQuery("base", elementType);
+ return new SpanDistanceQuery(
new SpanTermQuery(new Term("base",x)),
- new SpanTermQuery(new Term("base",y)),
- minDistance,
- maxDistance,
- isOrdered,
+ new SpanTermQuery(new Term("base",y)),
+ new DistanceConstraint(e,minDistance, maxDistance, isOrdered, false),
true);
}
@@ -215,15 +214,28 @@
}
-// @Test
-// public void testCase5() throws IOException{
-// ki = new KorapIndex();
-// ki.addDoc(createFieldDoc0());
-// ki.commit();
-// SpanQuery sq, edq;
-// edq = createQuery("s", "s:b", "s:c", 0, 2,false);
-// kr = ki.search(edq, (short) 10);
-//
+ /** Next */
+ @Test
+ public void testCase5() throws IOException{
+ ki = new KorapIndex();
+ ki.addDoc(createFieldDoc0());
+ ki.commit();
+
+ SpanQuery sq, edq;
+ edq = createQuery("s", "s:b", "s:c", 0, 2,false);
+ kr = ki.search(edq, (short) 10);
+ assertEquals(6, kr.getTotalResults());
+
+ sq = new SpanNextQuery(
+ new SpanTermQuery(new Term("base", "s:b"))
+ ,edq);
+ kr = ki.search(sq, (short) 10);
+ assertEquals(2, kr.getTotalResults());
+ assertEquals(1, kr.getMatch(0).getStartPos());
+ assertEquals(4, kr.getMatch(0).getEndPos());
+ assertEquals(2, kr.getMatch(1).getStartPos());
+ assertEquals(5, kr.getMatch(1).getEndPos());
+
// System.out.print(kr.getTotalResults()+"\n");
// for (int i=0; i< kr.getTotalResults(); i++){
// System.out.println(
@@ -232,33 +244,5 @@
// kr.match(i).endPos
// );
// }
-////
-//// System.out.println("h");
-//// sq = new SpanTermQuery(new Term("base", "s:b"));
-////
-//// kr = ki.search(sq, (short) 10);
-////
-//// System.out.print(kr.getTotalResults()+"\n");
-//// for (int i=0; i< kr.getTotalResults(); i++){
-//// System.out.println(
-//// kr.match(i).getLocalDocID()+" "+
-//// kr.match(i).startPos + " " +
-//// kr.match(i).endPos
-//// );
-//// }
-//
-// sq = new SpanNextQuery(
-// new SpanTermQuery(new Term("base", "s:b"))
-// ,edq);
-// kr = ki.search(sq, (short) 10);
-//
-// System.out.print(kr.getTotalResults()+"\n");
-// for (int i=0; i< kr.getTotalResults(); i++){
-// System.out.println(
-// kr.match(i).getLocalDocID()+" "+
-// kr.match(i).startPos + " " +
-// kr.match(i).endPos
-// );
-// }
-// }
+ }
}
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
index 0f897d8..a5a945e 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestWPDIndex.java
@@ -19,10 +19,11 @@
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.KorapSearch;
import de.ids_mannheim.korap.filter.BooleanFilter;
+import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
-import de.ids_mannheim.korap.query.SpanQuantifierQuery;
+import de.ids_mannheim.korap.query.SpanRepetitionQuery;
public class TestWPDIndex {
long start, end;
@@ -31,26 +32,23 @@
KorapSearch ks;
private SpanDistanceQuery createElementDistanceQuery(String e, String x, String y,
- int min, int max, boolean isOrdered){
- SpanDistanceQuery sq = new SpanDistanceQuery(
- new SpanElementQuery("tokens", "s"),
+ int min, int max, boolean isOrdered, boolean exclusion){
+ SpanElementQuery eq = new SpanElementQuery("tokens", e);
+ SpanDistanceQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("tokens",x)),
new SpanTermQuery(new Term("tokens",y)),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(eq, min, max, isOrdered, exclusion),
true
);
return sq;
}
- private SpanDistanceQuery createDistanceQuery(String x, String y, int min, int max, boolean isOrdered){
+ private SpanDistanceQuery createDistanceQuery(String x, String y, int min, int max,
+ boolean isOrdered, boolean exclusion){
SpanDistanceQuery sq = new SpanDistanceQuery(
new SpanTermQuery(new Term("tokens",x)),
new SpanTermQuery(new Term("tokens",y)),
- min,
- max,
- isOrdered,
+ new DistanceConstraint(min, max, isOrdered, exclusion),
true
);
return sq;
@@ -71,18 +69,18 @@
public void testCase1() throws IOException{
SpanDistanceQuery sq;
// ordered
- sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, true);
+ sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, true,false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(8, kr.getTotalResults());
// unordered
- sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, false);
+ sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, false,false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(11, kr.getTotalResults());
- sq = createDistanceQuery("s:kommen", "s:Wir", 1, 1, false);
+ sq = createDistanceQuery("s:kommen", "s:Wir", 1, 1, false,false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(11, kr.getTotalResults());
@@ -99,15 +97,13 @@
SpanDistanceQuery sq;
// ordered
- sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, true);
- sq.setExclusion(true);
+ sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, true, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(1899, kr.getTotalResults());
// unordered
- sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, false);
- sq.setExclusion(true);
+ sq = createDistanceQuery("s:Wir", "s:kommen", 1, 1, false, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(1896, kr.getTotalResults());
@@ -123,19 +119,20 @@
@Test
public void testCase3() throws IOException{
// ordered
- SpanDistanceQuery sq = createElementDistanceQuery("s","s:weg", "s:fahren", 0, 1, true);
+ SpanDistanceQuery sq = createElementDistanceQuery("s","s:weg", "s:fahren",
+ 0, 1, true, false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(3,kr.getTotalResults());
// unordered
- sq = createElementDistanceQuery("s","s:weg", "s:fahren", 0, 1, false);
+ sq = createElementDistanceQuery("s","s:weg", "s:fahren", 0, 1, false,false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(5,kr.getTotalResults());
// only 0
- sq = createElementDistanceQuery("s","s:weg", "s:fahren", 0, 0, false);
+ sq = createElementDistanceQuery("s","s:weg", "s:fahren", 0, 0, false,false);
kr = ki.search(sq, (short) 100);
assertEquals(2,kr.getTotalResults());
assertEquals("WPD_BBB.04463", kr.match(0).getDocID());
@@ -146,7 +143,7 @@
assertEquals(451,kr.getMatch(1).getEndPos());
// only 1
- sq = createElementDistanceQuery("s","s:weg", "s:fahren", 1, 1, false);
+ sq = createElementDistanceQuery("s","s:weg", "s:fahren", 1, 1, false,false);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(3,kr.getTotalResults());
@@ -155,9 +152,7 @@
/** Element distance exclusion */
@Test
public void testCase4() throws IOException{
- SpanDistanceQuery sq = createElementDistanceQuery("s","s:weg", "s:fahren", 1, 1, false);
- sq.setExclusion(true);
-
+ SpanDistanceQuery sq = createElementDistanceQuery("s","s:weg", "s:fahren", 1, 1, false, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(979,kr.getTotalResults());
@@ -178,18 +173,18 @@
@Test
public void testCase5() throws IOException{
SpanQuery sq;
- sq = new SpanQuantifierQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),1,2, true);
+ sq = new SpanRepetitionQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),1,2, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(4116416, kr.getTotalResults());
//0.9s
- sq = new SpanQuantifierQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),1,1, true);
+ sq = new SpanRepetitionQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),1,1, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(3879671, kr.getTotalResults());
- sq = new SpanQuantifierQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),2,2, true);
+ sq = new SpanRepetitionQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),2,2, true);
ks = new KorapSearch(sq);
kr = ks.run(ki);
assertEquals(236745, kr.getTotalResults());
@@ -201,7 +196,7 @@
public void testCase6() throws IOException{
SpanQuery sq = new SpanNextQuery(
new SpanTermQuery(new Term("tokens", "tt/p:NN")),
- new SpanQuantifierQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),2,2, true)
+ new SpanRepetitionQuery(new SpanTermQuery(new Term("tokens","mate/p:ADJA")),2,2, true)
);
ks = new KorapSearch(sq);
kr = ks.run(ki);