Extract Querybuilder methods from KrillQuery
diff --git a/Changes b/Changes
index 2da2650..b679679 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
-0.50.1 2015-02-25
+0.50.1 2015-02-26
- [feature] Deserialization of arbitrary elements with attributes (margaretha)
- - [cleanup] Extract KrillMeta from Krill (diewald)
+ - [cleanup] Extract KrillMeta from Krill,
+ rename KorapQuery to KrillQuery,
+ extract QueryBuilder from KrillQuery (diewald)
0.50 2015-02-23
- Project name is now "Krill"
diff --git a/src/main/java/de/ids_mannheim/korap/KrillQuery.java b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
index 08edf38..01385c7 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillQuery.java
@@ -4,39 +4,26 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.lucene.util.automaton.RegExp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.lucene.util.automaton.RegExp;
+
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.ids_mannheim.korap.query.SpanWithinQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.query.wrap.*;
import de.ids_mannheim.korap.response.Notifications;
import de.ids_mannheim.korap.util.QueryException;
/**
- * KrillQuery implements a simple API for wrapping
- * KorAP Lucene Index specific query classes and provides
- * deserialization of JSON-LD queries.
+ * KrillQuery provides deserialization methods
+ * for KoralQuery query objects.
*
- * Build complex queries.
* <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanQueryWrapper sqw = (SpanQueryWrapper)
- * kq.seq(
- * kq.empty(),
- * kq.seg(
- * kq.re("mate/p=N.*"),
- * kq.re("opennlp/p=N.*")
- * )
- * );
- * </pre></blockquote>
- *
- * Deserialize from JSON input.
- * <blockquote><pre>
- * SpanQueryWrapper = new KrillQuery("tokens").fromJson("{... JsonString ...}");
+ * SpanQueryWrapper sqw = new KrillQuery("tokens").fromJson("{... JsonString ...}");
* </pre></blockquote>
*
* @author diewald
@@ -58,7 +45,7 @@
*/
public class KrillQuery extends Notifications {
private String field;
- private ObjectMapper mapper;
+ private QueryBuilder builder;
private JsonNode json;
// Logger
@@ -81,21 +68,15 @@
private static final int MAX_CLASS_NUM = 255; // 127;
/**
- * Constructs a new object for query generation.
- */
- public KrillQuery () {
- this.mapper = new ObjectMapper();
- };
-
-
- /**
- * Constructs a new object for query generation.
+ * Constructs a new object for query deserialization
+ * and building. Expects the name of an index field
+ * to apply the query on (this should normally be
+ * a token stream field).
*
* @param field The specific index field for the query.
*/
public KrillQuery (String field) {
this.field = field;
- this.mapper = new ObjectMapper();
};
@@ -156,7 +137,7 @@
JsonNode jsonN;
try {
// Read Json string
- jsonN = this.mapper.readValue(json, JsonNode.class);
+ jsonN = new ObjectMapper().readValue(json, JsonNode.class);
}
// Something went wrong
@@ -292,6 +273,49 @@
};
+ /**
+ * Get the associated {@link QueryBuilder} object
+ * for query building.
+ */
+ public QueryBuilder builder () {
+ if (this.builder == null)
+ this.builder = new QueryBuilder(this.field);
+ return this.builder;
+ };
+
+
+ /**
+ * Return the associated KoralQuery query object
+ * as a {@link JsonNode}. This won't work,
+ * if the object was build using a {@link QueryBuilder},
+ * therefore it is limited to mirror a deserialized KoralQuery
+ * object.
+ *
+ * @return The {@link JsonNode} representing the query object
+ * of a deserialized KoralQuery object.
+ */
+ public JsonNode toJsonNode () {
+ return this.json;
+ };
+
+
+ /**
+ * Return the associated KoralQuery query object
+ * as a JSON string. This won't work,
+ * if the object was build using a {@link QueryBuilder},
+ * therefore it is limited to mirror a deserialized KoralQuery
+ * object.
+ *
+ * @return A JSON string representing the query object
+ * of a deserialized KoralQuery object.
+ */
+ public String toJsonString () {
+ if (this.json == null)
+ return "{}";
+ return this.json.toString();
+ };
+
+
// Deserialize koral:group
private SpanQueryWrapper _groupFromJson (JsonNode json) throws QueryException {
@@ -628,7 +652,7 @@
if (operands.size() == 1)
return this.fromJson(operands.get(0));
- SpanSequenceQueryWrapper sseqqw = this.seq();
+ SpanSequenceQueryWrapper sseqqw = this.builder().seq();
// Say if the operand order is important
if (json.has("inOrder"))
@@ -786,7 +810,7 @@
// Get operands
JsonNode operands = json.get("operands");
- SpanSegmentQueryWrapper ssegqw = this.seg();
+ SpanSegmentQueryWrapper ssegqw = this.builder().seg();
if (!json.has("relation"))
throw new QueryException(743, "Term group expects a relation");
@@ -915,13 +939,15 @@
// Regular expression or wildcard
if (isTerm && json.has("type")) {
+ QueryBuilder qb = this.builder();
+
// Branch on type
switch (json.get("type").asText()) {
case "type:regex":
- return this.seg(this.re(value.toString(), isCaseInsensitive));
+ return qb.seg(qb.re(value.toString(), isCaseInsensitive));
case "type:wildcard":
- return this.seq(this.wc(value.toString(), isCaseInsensitive));
+ return qb.seq(qb.wc(value.toString(), isCaseInsensitive));
case "type:string":
break;
@@ -938,11 +964,11 @@
match = json.get("match").asText();
}
- SpanSegmentQueryWrapper ssqw = seg(value.toString());
+ SpanSegmentQueryWrapper ssqw = this.builder().seg(value.toString());
if (match.equals("match:ne")) {
if (DEBUG) log.trace("Term is negated");
ssqw.makeNegative();
- return this.seg().without(ssqw);
+ return this.builder().seg().without(ssqw);
}
else if (match.equals("match:eq")) {
return ssqw;
@@ -960,30 +986,33 @@
}
if (value.toString().isEmpty()) {
- return createElementAttrFromJson(null, json, attrNode);
+ return _createElementAttrFromJson(null, json, attrNode);
// this.addWarning(771,
// "Arbitraty elements with attributes are currently not supported.");
}
else{
- SpanQueryWrapper elementWithIdWrapper = tag(value.toString());
+ SpanQueryWrapper elementWithIdWrapper = this.builder().tag(value.toString());
if (elementWithIdWrapper == null){ return null; }
- return createElementAttrFromJson(elementWithIdWrapper, json,
+ return _createElementAttrFromJson(elementWithIdWrapper, json,
attrNode);
}
};
- return this.tag(value.toString());
+ return this.builder().tag(value.toString());
};
- private SpanQueryWrapper createElementAttrFromJson(
- SpanQueryWrapper elementWithIdWrapper, JsonNode json,
- JsonNode attrNode) throws QueryException {
+
+ // Deserialize elements with attributes
+ private SpanQueryWrapper _createElementAttrFromJson (
+ SpanQueryWrapper elementWithIdWrapper,
+ JsonNode json,
+ JsonNode attrNode) throws QueryException {
if (attrNode.get("@type").asText().equals("koral:term")) {
SpanQueryWrapper attrWrapper = _attrFromJson(json.get("attr"));
if (attrWrapper != null) {
if (elementWithIdWrapper != null){
return new SpanWithAttributeQueryWrapper(elementWithIdWrapper,
- attrWrapper);
+ attrWrapper);
}
else {
return new SpanWithAttributeQueryWrapper(attrWrapper);
@@ -993,18 +1022,20 @@
throw new QueryException(747, "Attribute is null");
}
}
- else if (attrNode.get("@type").asText().equals("koral:termGroup")) {
- return handleAttrGroup(elementWithIdWrapper, attrNode);
+ else if (attrNode.get("@type").asText().equals("koral:termGroup")) {
+ return _handleAttrGroup(elementWithIdWrapper, attrNode);
}
else {
this.addWarning(715, "Attribute type is not supported");
}
return elementWithIdWrapper;
}
-
- private SpanQueryWrapper handleAttrGroup(
- SpanQueryWrapper elementWithIdWrapper, JsonNode attrNode)
- throws QueryException {
+
+
+ // Deserialize attribute groups
+ private SpanQueryWrapper _handleAttrGroup (
+ SpanQueryWrapper elementWithIdWrapper,
+ JsonNode attrNode) throws QueryException {
if (!attrNode.has("relation")) {
throw new QueryException(743, "Term group expects a relation");
}
@@ -1028,7 +1059,7 @@
if (elementWithIdWrapper != null){
return new SpanWithAttributeQueryWrapper(elementWithIdWrapper,
- wrapperList);
+ wrapperList);
}
else {
return new SpanWithAttributeQueryWrapper(wrapperList);
@@ -1044,7 +1075,9 @@
}
if (elementWithIdWrapper != null) {
saqw = new SpanWithAttributeQueryWrapper(
- elementWithIdWrapper, attrWrapper);
+ elementWithIdWrapper,
+ attrWrapper
+ );
} else {
saqw = new SpanWithAttributeQueryWrapper(attrWrapper);
}
@@ -1080,361 +1113,4 @@
}
return null;
};
-
- public JsonNode toJsonNode () {
- return this.json;
- };
-
- public String toJsonString () {
- if (this.json == null)
- return "{}";
- return this.json.toString();
- };
-
-
- /*
- * Following are builder methods that will probably move
- * to a separated class in the future
- */
-
-
- /**
- * Create a query object based on a regular expression.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanRegexQueryWrapper re = kq.re(".+?");
- * </pre></blockquote>
- *
- * @param re The regular expession as a string.
- * @return A {@link SpanRegexQueryWrapper} object.
- */
- public SpanRegexQueryWrapper re (String re) {
- return new SpanRegexQueryWrapper(this.field, re, RegExp.ALL, false);
- };
-
-
- /**
- * Create a query object based on a regular expression.
- *
- * Supports flags as defined in {@link org.apache.lucene.util.automaton.RegExp}:
- * <ul>
- * <li><tt>RegExp.ALL</tt> - enables all optional regexp syntax</li>
- * <li><tt>RegExp.ANYSTRING</tt> - enables anystring (@)</li>
- * <li><tt>RegExp.AUTOMATON</tt> - enables named automata (<identifier>)</li>
- * <li><tt>RegExp.COMPLEMENT</tt> - enables complement (~)</li>
- * <li><tt>RegExp.EMPTY</tt> - enables empty language (#)</li>
- * <li><tt>RegExp.INTERSECTION</tt> - enables intersection (&)</li>
- * <li><tt>RegExp.INTERVAL</tt> - enables numerical intervals (<n-m>)</li>
- * <li><tt>RegExp.NONE</tt> - enables no optional regexp syntax</li>
- * </ul>
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanRegexQueryWrapper re = kq.re("[Aa]lternatives?", RegExp.NONE);
- * </pre></blockquote>
- *
- * @param re The regular expession as a string.
- * @param flags The flag for the regular expression.
- * @return A {@link SpanRegexQueryWrapper} object.
- */
- public SpanRegexQueryWrapper re (String re, int flags) {
- return new SpanRegexQueryWrapper(this.field, re, flags, false);
- };
-
-
- /**
- * Create a query object based on a regular expression.
- *
- * Supports flags (see above) and case insensitivity.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanRegexQueryWrapper re = kq.re("alternatives?", RegExp.NONE, true);
- * </pre></blockquote>
- *
- * @param re The regular expession as a string.
- * @param flags The flag for the regular expression.
- * @param caseinsensitive A boolean value indicating case insensitivity.
- * @return A {@link SpanRegexQueryWrapper} object.
- */
- public SpanRegexQueryWrapper re (String re, int flags, boolean caseinsensitive) {
- return new SpanRegexQueryWrapper(this.field, re, flags, caseinsensitive);
- };
-
-
- /**
- * Create a query object based on a regular expression.
- *
- * Supports case insensitivity.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanRegexQueryWrapper re = kq.re("alternatives?", true);
- * </pre></blockquote>
- *
- * @param re The regular expession as a string.
- * @param flags The flag for the regular expression.
- * @return A {@link SpanRegexQueryWrapper} object.
- */
- public SpanRegexQueryWrapper re (String re, boolean caseinsensitive) {
- return new SpanRegexQueryWrapper(this.field, re, RegExp.ALL, caseinsensitive);
- };
-
- /**
- * Create a query object based on a wildcard term.
- * <tt>*</tt> indicates an optional sequence of arbitrary characters,
- * <tt>?</tt> indicates a single character,
- * <tt>\</tt> can be used for escaping.
- *
- * @param wc The wildcard term as a string.
- * @return A {@link SpanWildcardQueryWrapper} object.
- */
- public SpanWildcardQueryWrapper wc (String wc) {
- return new SpanWildcardQueryWrapper(this.field, wc, false);
- };
-
- /**
- * Create a query object based on a wildcard term.
- * <tt>*</tt> indicates an optional sequence of arbitrary characters,
- * <tt>?</tt> indicates a single character,
- * <tt>\</tt> can be used for escaping.
- *
- * Supports case insensitivity.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanWildcardQueryWrapper wc = kq.wc("wall*", true);
- * </pre></blockquote>
- *
- * @param wc The wildcard term as a string.
- * @param caseinsensitive A boolean value indicating case insensitivity.
- * @return A {@link SpanWildcardQueryWrapper} object.
- */
- public SpanWildcardQueryWrapper wc (String wc, boolean caseinsensitive) {
- return new SpanWildcardQueryWrapper(this.field, wc, caseinsensitive);
- };
-
-
- /**
- * Create a segment query object.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanSegmentQueryWrapper seg = kq.seg();
- * </pre></blockquote>
- *
- * @return A {@link SpanSegmentQueryWrapper} object.
- */
- public SpanSegmentQueryWrapper seg () {
- return new SpanSegmentQueryWrapper(this.field);
- };
-
-
- /**
- * Create a segment query object.
- * Supports sequences of strings or {@link SpanRegexQueryWrapper},
- * and {@link SpanAlterQueryWrapper} objects.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanSegmentQueryWrapper seg = kq.seg(
- * kq.re("mate/p=.*?"),
- * kq.re("opennlp/p=.*?")
- * );
- * </pre></blockquote>
- *
- * @param terms[] An array of terms, the segment consists of.
- * @return A {@link SpanSegmentQueryWrapper} object.
- */
- // Sequence of regular expression queries
- public SpanSegmentQueryWrapper seg (SpanRegexQueryWrapper ... terms) {
- SpanSegmentQueryWrapper ssq = new SpanSegmentQueryWrapper(this.field);
- for (SpanRegexQueryWrapper t : terms)
- ssq.with(t);
- return ssq;
- };
-
- // Sequence of alternative queries
- public SpanSegmentQueryWrapper seg (SpanAlterQueryWrapper ... terms) {
- SpanSegmentQueryWrapper ssq = new SpanSegmentQueryWrapper(this.field);
- for (SpanAlterQueryWrapper t : terms)
- ssq.with(t);
- return ssq;
- };
-
- // Sequence of alternative queries
- public SpanSegmentQueryWrapper seg (String ... terms) {
- SpanSegmentQueryWrapper ssq = new SpanSegmentQueryWrapper(this.field);
- for (String t : terms)
- ssq.with(t);
- return ssq;
- };
-
- /**
- * Create an empty query segment.
- *
- * <blockquote><pre>
- * KrillQuery kq = new KrillQuery("tokens");
- * SpanRepetitionQueryWrapper seg = kq.empty();
- * </pre></blockquote>
- */
- public SpanRepetitionQueryWrapper empty () {
- return new SpanRepetitionQueryWrapper();
- };
-
-
- // TODO: Further JavaDocs
-
-
- /**
- * Create a segment alternation query object.
- * @param terms[] An array of alternative terms.
- */
- public SpanAlterQueryWrapper or (SpanQueryWrapper ... terms) {
- SpanAlterQueryWrapper ssaq = new SpanAlterQueryWrapper(this.field);
- for (SpanQueryWrapper t : terms)
- ssaq.or(t);
- return ssaq;
- };
-
-
- public SpanAlterQueryWrapper or (String ... terms) {
- SpanAlterQueryWrapper ssaq = new SpanAlterQueryWrapper(this.field);
- for (String t : terms)
- ssaq.or(t);
- return ssaq;
- };
-
-
- // SpanSegmentSequenceQueries
- /**
- * Create a sequence of segments query object.
- */
- public SpanSequenceQueryWrapper seq () {
- return new SpanSequenceQueryWrapper(this.field);
- };
-
-
- /**
- * Create a sequence of segments query object.
- * @param terms[] An array of segment defining terms.
- */
- public SpanSequenceQueryWrapper seq (SpanQueryWrapper ... terms) {
- SpanSequenceQueryWrapper sssq = new SpanSequenceQueryWrapper(this.field);
- for (SpanQueryWrapper t : terms)
- sssq.append(t);
- return sssq;
- };
-
-
- /**
- * Create a sequence of segments query object.
- * @param re A SpanSegmentRegexQuery, starting the sequence.
- */
- public SpanSequenceQueryWrapper seq (SpanRegexQueryWrapper re) {
- return new SpanSequenceQueryWrapper(this.field, re);
- };
-
-
- public SpanSequenceQueryWrapper seq (Object ... terms) {
- SpanSequenceQueryWrapper ssq = new SpanSequenceQueryWrapper(this.field);
- for (Object t : terms) {
- if (t instanceof SpanQueryWrapper) {
- ssq.append((SpanQueryWrapper) t);
- }
- else if (t instanceof SpanRegexQueryWrapper) {
- ssq.append((SpanRegexQueryWrapper) t);
- }
- else {
- log.error("{} is not an acceptable parameter for seq()", t.getClass());
- return ssq;
- };
- };
- return ssq;
- };
-
-
- public SpanElementQueryWrapper tag (String element) {
- return new SpanElementQueryWrapper(this.field, element);
- };
-
- /**
- * Create a wrapping within query object.
- * @param element A SpanQuery.
- * @param embedded A SpanQuery that is wrapped in the element.
- */
- @Deprecated
- public SpanWithinQueryWrapper within (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded);
- };
-
- public SpanWithinQueryWrapper contains (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded, WITHIN);
- };
-
- public SpanWithinQueryWrapper startswith (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded, STARTSWITH);
- };
-
- public SpanWithinQueryWrapper endswith (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded, ENDSWITH);
- };
-
- public SpanWithinQueryWrapper overlaps (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded, OVERLAP);
- };
-
- public SpanWithinQueryWrapper matches (SpanQueryWrapper element,
- SpanQueryWrapper embedded) {
- return new SpanWithinQueryWrapper(element, embedded, MATCH);
- };
-
- // Class
- public SpanClassQueryWrapper _ (byte number, SpanQueryWrapper element) {
- return new SpanClassQueryWrapper(element, number);
- };
-
- public SpanClassQueryWrapper _ (int number, SpanQueryWrapper element) {
- return new SpanClassQueryWrapper(element, number);
- };
-
- public SpanClassQueryWrapper _ (short number, SpanQueryWrapper element) {
- return new SpanClassQueryWrapper(element, number);
- };
-
- public SpanClassQueryWrapper _ (SpanQueryWrapper element) {
- return new SpanClassQueryWrapper(element);
- };
-
- // Focus
- public SpanFocusQueryWrapper focus (byte number, SpanQueryWrapper element) {
- return new SpanFocusQueryWrapper(element, number);
- };
-
- public SpanFocusQueryWrapper focus (int number, SpanQueryWrapper element) {
- return new SpanFocusQueryWrapper(element, number);
- };
-
- public SpanFocusQueryWrapper focus (short number, SpanQueryWrapper element) {
- return new SpanFocusQueryWrapper(element, number);
- };
-
- public SpanFocusQueryWrapper focus (SpanQueryWrapper element) {
- return new SpanFocusQueryWrapper(element);
- };
-
- // Repetition
- public SpanRepetitionQueryWrapper repeat (SpanQueryWrapper element, int exact) {
- return new SpanRepetitionQueryWrapper(element, exact);
- };
-
- public SpanRepetitionQueryWrapper repeat (SpanQueryWrapper element, int min, int max) {
- return new SpanRepetitionQueryWrapper(element, min, max);
- };
};
diff --git a/src/main/java/de/ids_mannheim/korap/response/KorapResponse.java b/src/main/java/de/ids_mannheim/korap/response/KorapResponse.java
index 738e32a..88b73bc 100644
--- a/src/main/java/de/ids_mannheim/korap/response/KorapResponse.java
+++ b/src/main/java/de/ids_mannheim/korap/response/KorapResponse.java
@@ -30,6 +30,7 @@
* @author diewald
* @see Notifications
*/
+// Todo: Use configuration file to get default token field "tokens"
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class KorapResponse extends Notifications {
@@ -328,10 +329,11 @@
* @return The {@link KrillQuery} object,
* representing the KoralQuery query object.
*/
+ // TODO: "tokens" shouldn't be fixed.
@JsonIgnore
public KrillQuery getQuery () {
if (this.query == null)
- this.query = new KrillQuery();
+ this.query = new KrillQuery("tokens");
return this.query;
};
diff --git a/src/test/java/de/ids_mannheim/korap/TestSimple.java b/src/test/java/de/ids_mannheim/korap/TestSimple.java
index 1b1fe24..ec741fd 100644
--- a/src/test/java/de/ids_mannheim/korap/TestSimple.java
+++ b/src/test/java/de/ids_mannheim/korap/TestSimple.java
@@ -6,6 +6,7 @@
import static org.junit.Assert.*;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.model.*;
import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
import de.ids_mannheim.korap.util.QueryException;
@@ -99,7 +100,7 @@
}
catch (QueryException e) {
fail(e.getMessage());
- sqwi = new KrillQuery("tokens").seg("???");
+ sqwi = new QueryBuilder("tokens").seg("???");
};
return sqwi;
};
diff --git a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
index badae2d..06dc685 100644
--- a/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
+++ b/src/test/java/de/ids_mannheim/korap/benchmark/TestBenchmarkSpans.java
@@ -9,6 +9,7 @@
import de.ids_mannheim.korap.Krill;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import org.apache.lucene.store.MMapDirectory;
import de.ids_mannheim.korap.collection.BooleanFilter;
import org.apache.lucene.search.spans.SpanQuery;
@@ -371,7 +372,7 @@
}
catch (QueryException e) {
fail(e.getMessage());
- sqwi = new KrillQuery("tokens").seg("???");
+ sqwi = new QueryBuilder("tokens").seg("???");
};
return sqwi;
};
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestKorapCollectionLegacy.java b/src/test/java/de/ids_mannheim/korap/collection/TestKorapCollectionLegacy.java
index 7183de6..97bbffd 100644
--- a/src/test/java/de/ids_mannheim/korap/collection/TestKorapCollectionLegacy.java
+++ b/src/test/java/de/ids_mannheim/korap/collection/TestKorapCollectionLegacy.java
@@ -7,6 +7,7 @@
import de.ids_mannheim.korap.KorapCollection;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.collection.BooleanFilter;
import org.apache.lucene.index.Term;
@@ -78,7 +79,7 @@
assertEquals("Paragraphs", 48, kc.numberOf("paragraphs"));
// Create a query
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
KorapResult kr = kc.search(query);
@@ -155,7 +156,7 @@
assertEquals("Paragraphs", 48, kc.numberOf("paragraphs"));
// Create a query
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
KorapResult kr = kc.search(query);
@@ -208,7 +209,7 @@
assertEquals("Paragraphs", 139, kc.numberOf("paragraphs"));
// Create a query
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
SpanQuery query = kq.seg("opennlp/p:NN").with("tt/p:NN").toQuery();
KorapResult kr = kc.search(query);
diff --git a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
index 0a154dc..79d49b0 100644
--- a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
@@ -7,6 +7,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.Krill;
import de.ids_mannheim.korap.KorapMatch;
@@ -50,7 +51,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
KorapResult kr = ki.search(
(SpanQuery) kq.seq(kq._(1, kq.seg("s:b"))).toQuery()
);
@@ -120,7 +121,7 @@
FieldDocument fd = ki.addDoc(json);
ki.commit();
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
KorapResult kr = ki.search((SpanQuery) kq.seq(kq.seg("s:a")).append(kq.seg("s:b")).append(kq.seg("s:c")).toQuery());
KorapMatch km = kr.getMatch(0);
@@ -187,7 +188,7 @@
// Commit!
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery q = (SpanQuery) kq.or(kq._(1, kq.seg("s:a"))).or(kq._(2, kq.seg("s:b"))).toQuery();
KorapResult kr = ki.search(q);
assertEquals((long) 14, kr.getTotalResults());
@@ -209,7 +210,7 @@
assertEquals("a[{2:b}]a", kr.getMatch(12).getSnippetBrackets());
assertEquals("ab[{1:a}]", kr.getMatch(13).getSnippetBrackets());
- kq = new KrillQuery("base");
+ kq = new QueryBuilder("base");
q = (SpanQuery) kq.or(kq._(1, kq.seg("i:a"))).or(kq._(2, kq.seg("i:c"))).toQuery();
Krill qs = new Krill(q);
qs.getMeta().getContext().left.setToken(true).setLength((short) 1);
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 735674a..bebd2a9 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
@@ -19,6 +19,7 @@
import de.ids_mannheim.korap.KorapMatch;
import de.ids_mannheim.korap.KrillQuery;
import de.ids_mannheim.korap.KorapResult;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.query.DistanceConstraint;
import de.ids_mannheim.korap.query.SpanDistanceQuery;
import de.ids_mannheim.korap.query.SpanElementQuery;
@@ -215,7 +216,7 @@
}
catch (QueryException e) {
fail(e.getMessage());
- sqwi = new KrillQuery("tokens").seg("???");
+ sqwi = new QueryBuilder("tokens").seg("???");
};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
index e376e7f..faf7b1b 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
@@ -25,6 +25,7 @@
import de.ids_mannheim.korap.KorapDocument;
import de.ids_mannheim.korap.query.SpanNextQuery;
import de.ids_mannheim.korap.query.SpanClassQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.index.FieldDocument;
import de.ids_mannheim.korap.model.MultiTermTokenStream;
@@ -135,7 +136,7 @@
assertEquals(fd.getPubPlace(),"Bochum");
assertEquals(fd.getPubDate().toDisplay(),"2013-06-17");
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
KorapResult kr = ki.search((SpanQuery) kq.seq(kq._(3, kq.seg("s:b"))).toQuery());
KorapMatch km = kr.getMatch(0);
@@ -174,7 +175,7 @@
};
ki.commit();
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
Krill ks;
KorapResult kr;
@@ -247,16 +248,16 @@
};
public static SpanQueryWrapper jsonQuery (String jsonFile) {
- SpanQueryWrapper sqwi;
+ SpanQueryWrapper sqwi;
- try {
- String json = getString(jsonFile);
- sqwi = new KrillQuery("tokens").fromJson(json);
- }
- catch (QueryException e) {
- fail(e.getMessage());
- sqwi = new KrillQuery("tokens").seg("???");
- };
- return sqwi;
+ try {
+ String json = getString(jsonFile);
+ sqwi = new KrillQuery("tokens").fromJson(json);
+ }
+ catch (QueryException e) {
+ fail(e.getMessage());
+ sqwi = new QueryBuilder("tokens").seg("???");
+ };
+ return sqwi;
};
};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
index ea51476..65f6679 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -15,6 +15,7 @@
import de.ids_mannheim.korap.KorapIndex;
import de.ids_mannheim.korap.KrillQuery;
import de.ids_mannheim.korap.Krill;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.KorapMatch;
import de.ids_mannheim.korap.util.QueryException;
@@ -91,7 +92,7 @@
ki.addDoc(createSimpleFieldDoc());
ki.commit();
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
Krill ks = new Krill(
kq._(2,kq.seq(kq.seg("s:b")).append(kq._(kq.seg("s:a"))))
);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
index 39371c1..c1caa4a 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIndex.java
@@ -287,7 +287,7 @@
KorapResult kr;
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq._(1,kq.seq(kq.seg("s:b")).append(kq.seg("s:a")).append(kq._(2,kq.seg("s:c")))).toQuery();
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
index e2b52fc..6c589ff 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRealIndex.java
@@ -14,13 +14,13 @@
import org.junit.Test;
import de.ids_mannheim.korap.*;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.util.QueryException;
public class TestRealIndex {
KorapIndex ki;
KorapResult kr;
Krill ks;
- KrillQuery kq;
public TestRealIndex() throws IOException {
InputStream is = getClass().getResourceAsStream("/server.properties");
@@ -35,7 +35,7 @@
@Test
public void testCase1() throws IOException, QueryException {
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
ks = new Krill(kq.within(kq.tag("base/s:s"), kq.seq(kq.re("s:.*")).append(kq._(kq.re("s:.*")))).toQuery());
ks.getMeta().setTimeOut(10000);
kr = ks.apply(ki);
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
index 5fb5afa..5dffbee 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestRegexWildcardIndex.java
@@ -17,6 +17,7 @@
import de.ids_mannheim.korap.KrillQuery;
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.Krill;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.index.FieldDocument;
import de.ids_mannheim.korap.model.MultiTermTokenStream;
import org.apache.lucene.search.Query;
@@ -48,7 +49,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq.re("s:af*e").toQuery();
assertEquals("SpanMultiTermQueryWrapper(base:/s:af*e/)", sq.toString());
@@ -61,22 +62,22 @@
assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("affe [afffe] baum ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:baum.*").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:baum.*").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... afffe [baum] baumgarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:.....?garten").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:.....?garten").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... baumgarten [steingarten] franz ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:ha.s").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:ha.s").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... franz [hans] haus ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... hans [haus] efeu ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:.*ff.*").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:.*ff.*").toQuery()));
assertEquals((long) 3, kr.getTotalResults());
assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("affe [afffe] baum ...", kr.getMatch(1).getSnippetBrackets());
@@ -105,7 +106,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq.wc("s:af*e").toQuery();
assertEquals("SpanMultiTermQueryWrapper(base:s:af*e)", sq.toString());
@@ -118,25 +119,25 @@
assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("affe [afffe] baum ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").wc("s:baum.*").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").wc("s:baum.*").toQuery()));
assertEquals((long) 0, kr.getTotalResults());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").wc("s:baum*").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").wc("s:baum*").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... afffe [baum] baumgarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").wc("s:*garten").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").wc("s:*garten").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... baum [baumgarten] steingarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... baumgarten [steingarten] franz ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").wc("s:ha?s").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").wc("s:ha?s").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... franz [hans] haus ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... hans [haus] efeu ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").wc("s:?ff?").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").wc("s:?ff?").toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("[affe] afffe ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... efeu [effe]", kr.getMatch(1).getSnippetBrackets());
@@ -164,7 +165,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq.re("s:Af*e", true).toQuery();
assertEquals("SpanMultiTermQueryWrapper(base:/i:af*e/)", sq.toString());
@@ -177,30 +178,30 @@
assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("AfFe [aFfFE] Baum ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:Af.*e").toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:Af.*e").toQuery()));
assertEquals((long) 1, kr.getTotalResults());
assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:baum.*", true).toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:baum.*", true).toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... aFfFE [Baum] Baumgarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:.*garten", true).toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:.*garten", true).toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... Baumgarten [SteinGarten] franZ ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:.*garten", false).toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:.*garten", false).toQuery()));
assertEquals((long) 1, kr.getTotalResults());
assertEquals("... Baum [Baumgarten] SteinGarten ...", kr.getMatch(0).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:ha.s", true).toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:ha.s", true).toQuery()));
assertEquals((long) 2, kr.getTotalResults());
assertEquals("... franZ [HaNs] Haus ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("... HaNs [Haus] Efeu ...", kr.getMatch(1).getSnippetBrackets());
- kr = ki.search(ks.setSpanQuery(new KrillQuery("base").re("s:.*f*e", true).toQuery()));
+ kr = ki.search(ks.setSpanQuery(new QueryBuilder("base").re("s:.*f*e", true).toQuery()));
assertEquals((long) 3, kr.getTotalResults());
assertEquals("[AfFe] aFfFE ...", kr.getMatch(0).getSnippetBrackets());
assertEquals("AfFe [aFfFE] Baum ...", kr.getMatch(1).getSnippetBrackets());
@@ -229,7 +230,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq.seq(kq.seg("s:affe")).append(kq.re("s:af*e")).toQuery();
assertEquals("spanNext(base:s:affe, SpanMultiTermQueryWrapper(base:/s:af*e/))", sq.toString());
@@ -265,7 +266,7 @@
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery sq = kq.contains(
kq.seq(
kq.re("s:a.*e")
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
index a6b7074..96a473c 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQuery.java
@@ -3,6 +3,7 @@
import java.util.*;
import org.apache.lucene.search.spans.SpanQuery;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.util.QueryException;
@@ -21,35 +22,35 @@
@Test
public void korapQuerySegment () throws QueryException {
- SpanQuery sq = new KrillQuery("field1").seg("a").with("b").toQuery();
+ SpanQuery sq = new QueryBuilder("field1").seg("a").with("b").toQuery();
assertEquals("spanSegment(field1:a, field1:b)", sq.toString());
- sq = new KrillQuery("field2").seg("a", "b").with("c").toQuery();
+ sq = new QueryBuilder("field2").seg("a", "b").with("c").toQuery();
assertEquals("spanSegment(spanSegment(field2:a, field2:b), field2:c)", sq.toString());
};
@Test
public void korapQueryRegexSegment () throws QueryException {
- KrillQuery kq = new KrillQuery("field1");
+ QueryBuilder kq = new QueryBuilder("field1");
SpanQuery sq = kq.seg("a").with(kq.re("b.*c")).toQuery();
assertEquals("spanSegment(field1:a, SpanMultiTermQueryWrapper(field1:/b.*c/))", sq.toString());
- kq = new KrillQuery("field2");
+ kq = new QueryBuilder("field2");
sq = kq.seg(kq.re("a.*")).with("b").toQuery();
assertEquals("spanSegment(SpanMultiTermQueryWrapper(field2:/a.*/), field2:b)", sq.toString());
};
@Test
public void korapQueryRegexSegment2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seg("a").with(kq.or("b").or("c")).toQuery();
assertEquals("spanSegment(field:a, spanOr([field:b, field:c]))", sq.toString());
- kq = new KrillQuery("field");
+ kq = new QueryBuilder("field");
sq = kq.seg("a").with(kq.or("b", "c")).toQuery();
assertEquals("spanSegment(field:a, spanOr([field:b, field:c]))", sq.toString());
- kq = new KrillQuery("field");
+ kq = new QueryBuilder("field");
// [ a & (b | /c.*d/) ]
sq = kq.seg("a").with(kq.or("b").or(kq.re("c.*d"))).toQuery();
assertEquals("spanSegment(field:a, spanOr([field:b, SpanMultiTermQueryWrapper(field:/c.*d/)]))", sq.toString());
@@ -57,49 +58,49 @@
@Test
public void korapQuerySequenceSegment () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("a").with(kq.or("b", "c"))).append("d").append(kq.re("e.?f")).toQuery();
assertEquals("spanNext(spanNext(spanSegment(field:a, spanOr([field:b, field:c])), field:d), SpanMultiTermQueryWrapper(field:/e.?f/))", sq.toString());
};
@Test
public void KorapTagQuery () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.tag("np").toQuery();
assertEquals("<field:np />", sq.toString());
};
@Test
public void KorapTagQuery2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.or(kq.tag("np"), kq.tag("vp")).toQuery();
assertEquals("spanOr([<field:np />, <field:vp />])", sq.toString());
};
@Test
public void KorapTagQuery3 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.tag("np"), kq.tag("vp")).toQuery();
assertEquals("spanNext(<field:np />, <field:vp />)", sq.toString());
};
@Test
public void KorapTagQuery4 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.tag("np"), kq.tag("vp")).append("test").toQuery();
assertEquals("spanNext(spanNext(<field:np />, <field:vp />), field:test)", sq.toString());
};
@Test
public void KorapTagQuery5 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.contains(kq.tag("s"), kq.tag("np")).toQuery();
assertEquals("spanContain(<field:s />, <field:np />)", sq.toString());
};
@Test
public void KorapTagQuery6 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("tree"), kq.contains(kq.tag("s"), kq.tag("np")), kq.re("hey.*")).toQuery();
assertEquals("spanNext(spanNext(field:tree, spanContain(<field:s />, <field:np />)), SpanMultiTermQueryWrapper(field:/hey.*/))", sq.toString());
};
@@ -107,133 +108,133 @@
@Test
public void KorapClassQuery () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("tree"), kq._(1, kq.contains(kq.tag("s"), kq.tag("np"))), kq.re("hey.*")).toQuery();
assertEquals("spanNext(spanNext(field:tree, {1: spanContain(<field:s />, <field:np />)}), SpanMultiTermQueryWrapper(field:/hey.*/))", sq.toString());
};
@Test
public void KorapClassQuery2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq._(kq.seg("base:test")).toQuery();
assertEquals("{1: field:base:test}", sq.toString());
};
@Test
public void KorapClassQuery3 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("tree"), kq.contains(kq.tag("s"), kq._(kq.tag("np"))), kq.re("hey.*")).toQuery();
assertEquals("spanNext(spanNext(field:tree, spanContain(<field:s />, {1: <field:np />})), SpanMultiTermQueryWrapper(field:/hey.*/))", sq.toString());
};
@Test
public void KorapShrinkQuery () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.focus(kq.tag("np")).toQuery();
assertEquals("focus(1: <field:np />)", sq.toString());
};
@Test
public void KorapShrinkQuery1 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.focus(1, kq.tag("np")).toQuery();
assertEquals("focus(1: <field:np />)", sq.toString());
};
@Test
public void KorapShrinkQuery2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.focus(1, kq._(1, kq.tag("np"))).toQuery();
assertEquals("focus(1: {1: <field:np />})", sq.toString());
};
@Test
public void KorapShrinkQuery3 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.focus(1, kq._(1, kq.seq(kq.tag("np"), kq._(kq.seg("test").without("no"))))).toQuery();
assertEquals("focus(1: {1: spanNext(<field:np />, {1: spanNot(field:test, field:no, 0, 0)})})", sq.toString());
};
@Test
public void KorapShrinkQuery4 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1"), kq.focus(1, kq._(1, kq.seg("try2"))), kq.seg("try3")).toQuery();
assertEquals("spanNext(spanNext(field:try1, focus(1: {1: field:try2})), field:try3)", sq.toString());
};
@Test
public void KorapSequenceQuery1 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).toQuery();
assertEquals("spanNext(field:try1, field:try2)", sq.toString());
};
@Test
public void KorapSequenceQuery2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(2,3).toQuery();
assertEquals("spanDistance(field:try1, field:try2, [(w[2:3], ordered, notExcluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery3 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(2,3, "s").toQuery();
assertEquals("spanElementDistance(field:try1, field:try2, [(s[2:3], ordered, notExcluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery4 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(2,3,"s").withConstraint(5,6,"w").toQuery();
assertEquals("spanMultipleDistance(field:try1, field:try2, [(s[2:3], ordered, notExcluded), (w[5:6], ordered, notExcluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery5 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(2,3,true).toQuery();
assertEquals("spanDistance(field:try1, field:try2, [(w[2:3], ordered, excluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery6 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(2,3,"s", true).toQuery();
assertEquals("spanElementDistance(field:try1, field:try2, [(s[2:3], ordered, excluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery7 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).withConstraint(5,6).withConstraint(2,3,"s",true).toQuery();
assertEquals("spanMultipleDistance(field:try1, field:try2, [(w[5:6], ordered, notExcluded), (s[2:3], ordered, excluded)])", sq.toString());
};
@Test
public void KorapSequenceQuery8 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.seq(kq.seg("try1")).append(kq.seg("try2")).append("try3").withConstraint(5,6).withConstraint(2,3,"s",true).toQuery();
assertEquals("spanMultipleDistance(spanMultipleDistance(field:try1, field:try2, [(w[5:6], ordered, notExcluded), (s[2:3], ordered, excluded)]), field:try3, [(w[5:6], ordered, notExcluded), (s[2:3], ordered, excluded)])", sq.toString());
};
@Test
public void KorapWithinQuery1 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.contains(kq.seg("test"), kq.seg("test2")).toQuery();
assertEquals("spanContain(field:test, field:test2)", sq.toString());
};
@Test
public void KorapWithinQuery2 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.overlaps(kq.seg("test"), kq.seg("test2")).toQuery();
assertEquals("spanOverlap(field:test, field:test2)", sq.toString());
};
@Test
public void KorapWithinQuery3 () throws QueryException {
- KrillQuery kq = new KrillQuery("field");
+ QueryBuilder kq = new QueryBuilder("field");
SpanQuery sq = kq.startswith(kq.seg("test"), kq.seg("test2")).toQuery();
assertEquals("spanStartsWith(field:test, field:test2)", sq.toString());
};
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
index 6277449..2613a20 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKrillQueryJSON.java
@@ -7,6 +7,7 @@
import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
import de.ids_mannheim.korap.KrillQuery;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.util.QueryException;
import static org.junit.Assert.*;
@@ -361,7 +362,7 @@
}
catch (QueryException e) {
fail(e.getMessage());
- sqwi = new KrillQuery("tokens").seg("???");
+ sqwi = new QueryBuilder("tokens").seg("???");
};
return sqwi;
};
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java b/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
index 7786e3e..b84d5f2 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKorapResult.java
@@ -1,3 +1,4 @@
+
package de.ids_mannheim.korap.search;
import java.util.*;
@@ -10,6 +11,7 @@
import de.ids_mannheim.korap.KorapResult;
import de.ids_mannheim.korap.Krill;
import de.ids_mannheim.korap.KorapMatch;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.index.FieldDocument;
import de.ids_mannheim.korap.util.QueryException;
@@ -54,7 +56,7 @@
// Commit!
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery q = (SpanQuery) kq.or(
kq._(1, kq.seg("s:a"))).or(kq._(2, kq.seg("s:b"))
).toQuery();
@@ -221,7 +223,7 @@
// Commit!
ki.commit();
- KrillQuery kq = new KrillQuery("base");
+ QueryBuilder kq = new QueryBuilder("base");
SpanQuery q = (SpanQuery) kq.seq(kq.seg("s:a")).append(kq.seg("s:b")).toQuery();
KorapResult kr = ki.search(q);
diff --git a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
index f4472fe..b22bd7a 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -10,6 +10,7 @@
import de.ids_mannheim.korap.KorapCollection;
import de.ids_mannheim.korap.KrillQuery;
import de.ids_mannheim.korap.KorapIndex;
+import de.ids_mannheim.korap.query.QueryBuilder;
import de.ids_mannheim.korap.index.FieldDocument;
import de.ids_mannheim.korap.meta.SearchContext;
import de.ids_mannheim.korap.collection.CollectionBuilder;
@@ -34,7 +35,7 @@
@Test
public void searchCount () {
Krill k = new Krill(
- new KrillQuery("field1").seg("a").with("b")
+ new QueryBuilder("field1").seg("a").with("b")
);
KrillMeta meta = k.getMeta();
@@ -53,7 +54,7 @@
@Test
public void searchStartIndex () {
Krill k = new Krill(
- new KrillQuery("field1").seg("a").with("b")
+ new QueryBuilder("field1").seg("a").with("b")
);
KrillMeta meta = k.getMeta();
@@ -74,7 +75,7 @@
@Test
public void searchQuery () {
Krill ks = new Krill(
- new KrillQuery("field1").seg("a").with("b")
+ new QueryBuilder("field1").seg("a").with("b")
);
// query
assertEquals(ks.getSpanQuery().toString(), "spanSegment(field1:a, field1:b)");
@@ -101,7 +102,7 @@
ki.commit();
Krill ks = new Krill(
- new KrillQuery("tokens").seg("s:Buchstaben")
+ new QueryBuilder("tokens").seg("s:Buchstaben")
);
// Todo: This is not an acceptable collection, but sigh
@@ -623,7 +624,7 @@
assertNull(fd.getDocAuthor());
Krill ks = new Krill(
- new KrillQuery("tokens").
+ new QueryBuilder("tokens").
seg("mate/m:case:nom").
with("mate/m:number:pl")
);
@@ -714,7 +715,7 @@
assertNull(fd.getDocAuthor());
Krill ks = new Krill(
- new KrillQuery("tokens").
+ new QueryBuilder("tokens").
seg("mate/m:case:nom").
with("mate/m:number:sg")
);
@@ -746,7 +747,7 @@
getFile()
);
- KrillQuery kq = new KrillQuery("tokens");
+ QueryBuilder kq = new QueryBuilder("tokens");
Krill ks = new Krill(
kq.focus(
1,