Merge "Failing test for focus sort"
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
index 1ea89d8..36c8c86 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFocusIndex.java
@@ -1,27 +1,35 @@
package de.ids_mannheim.korap.index;
-
+import org.junit.Test;
+import org.junit.Ignore;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.spans.SpanTermQuery;
-import org.junit.Test;
-
import de.ids_mannheim.korap.KrillIndex;
import de.ids_mannheim.korap.constants.RelationDirection;
import de.ids_mannheim.korap.query.SpanFocusQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
import de.ids_mannheim.korap.query.SpanRelationQuery;
+import de.ids_mannheim.korap.query.DistanceConstraint;
+import de.ids_mannheim.korap.query.SpanClassQuery;
+import de.ids_mannheim.korap.query.SpanElementQuery;
+import de.ids_mannheim.korap.query.SpanWithinQuery;
+import de.ids_mannheim.korap.query.wrap.SpanQueryWrapper;
import de.ids_mannheim.korap.response.Match;
import de.ids_mannheim.korap.response.Result;
+import de.ids_mannheim.korap.util.QueryException;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.spans.SpanTermQuery;
+import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanOrQuery;
+
public class TestFocusIndex {
private KrillIndex ki;
private Result kr;
-
public TestFocusIndex () throws IOException {
ki = new KrillIndex();
}
@@ -55,4 +63,71 @@
// System.out.println(m.getStartPos() + " " + m.getEndPos());
// }
}
+
+ @Test
+ @Ignore
+ public void testFocusSorting () throws IOException {
+ ki = new KrillIndex();
+ ki.addDoc(createFieldDoc());
+ ki.commit();
+
+ SpanElementQuery elemX = new SpanElementQuery("tokens", "x");
+
+ assertEquals("<tokens:x />", elemX.toString());
+
+ kr = ki.search(elemX, (short) 10);
+ assertEquals("[[abc]]d", kr.getMatch(0).getSnippetBrackets());
+ assertEquals("a[[bcd]]", kr.getMatch(1).getSnippetBrackets());
+ assertEquals(2, kr.getTotalResults());
+
+ SpanQuery termB = new SpanTermQuery(new Term("tokens", "s:b"));
+ SpanQuery termC = new SpanTermQuery(new Term("tokens", "s:c"));
+
+ SpanQuery classB = new SpanClassQuery(termB, (byte) 1);
+ SpanQuery classC = new SpanClassQuery(termC, (byte) 1);
+
+ SpanQuery within = new SpanWithinQuery(elemX, classB);
+
+ kr = ki.search(within, (short) 10);
+ assertEquals("[[a{1:b}c]]d", kr.getMatch(0).getSnippetBrackets());
+ assertEquals("a[[{1:b}cd]]", kr.getMatch(1).getSnippetBrackets());
+ assertEquals(2, kr.getTotalResults());
+
+ SpanQuery or = new SpanOrQuery(classB, classC);
+ within = new SpanWithinQuery(elemX, or);
+
+ kr = ki.search(within, (short) 10);
+ assertEquals("[[a{1:b}c]]d", kr.getMatch(0).getSnippetBrackets());
+ assertEquals("[[ab{1:c}]]d", kr.getMatch(1).getSnippetBrackets());
+ assertEquals("a[[{1:b}cd]]", kr.getMatch(2).getSnippetBrackets());
+ assertEquals("a[[b{1:c}d]]", kr.getMatch(3).getSnippetBrackets());
+ assertEquals(4, kr.getTotalResults());
+
+
+ SpanFocusQuery focus = new SpanFocusQuery(within, (byte) 1);
+ kr = ki.search(focus, (short) 10);
+ assertEquals("a[[{1:b}]]cd", kr.getMatch(0).getSnippetBrackets());
+ assertEquals("a[[{1:b}]]cd", kr.getMatch(1).getSnippetBrackets());
+ assertEquals("ab[[{1:c}]]d", kr.getMatch(2).getSnippetBrackets());
+ assertEquals("ab[[{1:c}]]d", kr.getMatch(3).getSnippetBrackets());
+ assertEquals(4, kr.getTotalResults());
+ }
+
+ public static FieldDocument createFieldDoc () {
+ FieldDocument fd = new FieldDocument();
+ fd.addString("ID", "doc-0");
+ fd.addTV(
+ "tokens",
+ "abcd",
+
+ "[(0-1)s:a|_0$<i>0<i>1|"
+ + "<>:x$<b>64<i>0<i>3<i>3<b>0]"
+ + "[(1-2)s:b|_1$<i>1<i>2|"
+ + "<>:x$<b>64<i>1<i>4<i>4<b>0]"
+ + "[(2-3)s:c|_2$<i>2<i>3]"
+ + "[(3-4)s:d|_3$<i>3<i>4]"
+ );
+
+ return fd;
+ }
}