Implemented relation queries with regex.
Change-Id: I1dafc835f6034d90a350d9688acdcf54bac28124
diff --git a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
index ca467fc..a10e770 100644
--- a/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
+++ b/src/main/java/de/ids_mannheim/korap/query/spans/RelationSpans.java
@@ -10,11 +10,13 @@
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermContext;
+import org.apache.lucene.search.spans.Spans;
import org.apache.lucene.search.spans.TermSpans;
import org.apache.lucene.util.Bits;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import de.ids_mannheim.korap.constants.RelationDirection;
import de.ids_mannheim.korap.query.SpanRelationQuery;
/**
@@ -52,8 +54,8 @@
public class RelationSpans extends RelationBaseSpans {
private int currentDoc, currentPosition;
- private int direction;
- private TermSpans relationTermSpan;
+ private RelationDirection direction;
+ private Spans relationTermSpan;
protected Logger logger = LoggerFactory.getLogger(RelationSpans.class);
private List<CandidateSpan> candidateList;
@@ -96,7 +98,7 @@
targetClass = relationSpanQuery.getTargetClass();
candidateList = new ArrayList<>();
- relationTermSpan = (TermSpans) firstSpans;
+ relationTermSpan = firstSpans;
hasMoreSpans = relationTermSpan.next();
}
@@ -138,8 +140,10 @@
}
else {
setCandidateList();
- currentDoc = relationTermSpan.doc();
- currentPosition = relationTermSpan.start();
+ if(hasMoreSpans){
+ currentDoc = relationTermSpan.doc();
+ currentPosition = relationTermSpan.start();
+ }
}
}
return false;
@@ -155,6 +159,7 @@
* @throws IOException
*/
private void setCandidateList () throws IOException {
+ logger.debug("hasMoreSpans "+hasMoreSpans+" "+relationTermSpan.doc());
while (hasMoreSpans && relationTermSpan.doc() == currentDoc
&& relationTermSpan.start() == currentPosition) {
@@ -257,7 +262,7 @@
if (relationTermSpan.isPayloadAvailable()) {
payload.addAll(relationTermSpan.getPayload());
}
- if (direction == 0) {
+ if (direction.equals(RelationDirection.RIGHT)) {
payload.add(createClassPayload(cs.getLeftStart(), cs.getLeftEnd(),
tempSourceNum, false));
payload.add(createClassPayload(cs.getRightStart(), cs.getRightEnd(),
@@ -393,12 +398,12 @@
}
- public int getDirection () {
+ public RelationDirection getDirection () {
return direction;
}
- public void setDirection (int direction) {
+ public void setDirection (RelationDirection direction) {
this.direction = direction;
}