Fixed sorting unordered element distance query results.
Change-Id: I0499a0c602c0d8d7a069477002bfd595ce24bac0
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 8ecc031..8594285 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestElementDistanceIndex.java
@@ -22,9 +22,14 @@
import de.ids_mannheim.korap.query.SpanElementQuery;
import de.ids_mannheim.korap.query.SpanNextQuery;
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;
+/**
+ * @author margaretha
+ *
+ */
@RunWith(JUnit4.class)
public class TestElementDistanceIndex {
@@ -87,7 +92,6 @@
return fd;
}
-
public SpanQuery createQuery (String elementType, String x, String y,
int min, int max, boolean isOrdered) {
@@ -246,8 +250,7 @@
kr = ki.search(sqwi.toQuery(), (short) 10);
assertEquals(1, kr.getTotalResults()); // Is 1 correct or should it not be ordered?
assertEquals("[[ec]]ebdc", kr.getMatch(0).getSnippetBrackets());
- };
-
+ }
public static String getString (String path) {
StringBuilder contentBuilder = new StringBuilder();
@@ -256,14 +259,14 @@
String str;
while ((str = in.readLine()) != null) {
contentBuilder.append(str);
- };
+ }
in.close();
}
catch (IOException e) {
fail(e.getMessage());
}
return contentBuilder.toString();
- };
+ }
public static SpanQueryWrapper jsonQuery (String jsonFile) {
@@ -276,7 +279,7 @@
catch (QueryException e) {
fail(e.getMessage());
sqwi = new QueryBuilder("tokens").seg("???");
- };
+ }
return sqwi;
- };
-};
+ }
+}
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 be79a11..c625818 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestUnorderedElementDistanceIndex.java
@@ -91,6 +91,19 @@
return fd;
}
+ private FieldDocument createFieldDoc5 () {
+ FieldDocument fd = new FieldDocument();
+ fd.addString("ID", "doc-2");
+ fd.addTV("base", "text",
+ "[(0-1)s:b|_1$<i>0<i>1|<>:s$<b>64<i>0<i>2<i>2<b>0|<>:p$<b>64<i>0<i>4<i>4<b>0]"
+ + "[(1-2)s:b|s:e|_2$<i>1<i>2]"
+ + "[(2-3)s:e|_3$<i>2<i>3|<>:s$<b>64<i>2<i>3<i>4<b>0]"
+ + "[(3-4)s:b|s:c|_4$<i>3<i>4]"
+ + "[(4-5)s:e|_5$<i>4<i>5|<>:s$<b>64<i>4<i>6<i>6<b>0|<>:p$<b>64<i>4<i>6<i>6<b>0]"
+ + "[(5-6)s:d|_6$<i>5<i>6]"
+ + "[(6-7)s:b|_7$<i>6<i>7|<>:s$<b>64<i>6<i>7<i>7<b>0|<>:p$<b>64<i>6<i>7<i>7<b>0]");
+ return fd;
+ }
public SpanQuery createQuery (String elementType, String x, String y,
int minDistance, int maxDistance, boolean isOrdered) {
@@ -251,4 +264,37 @@
// );
// }
}
+
+
+
+ /**
+ * Subspans occurrences are in the same positions.
+ */
+ @Test
+ public void testCase6 () throws IOException {
+ ki = new KrillIndex();
+ ki.addDoc(createFieldDoc5());
+ ki.commit();
+
+ SpanQuery sq = createQuery("s", "s:b", "s:e", 1, 2, false);
+ kr = ki.search(sq, (short) 10);
+
+ assertEquals(8, kr.getTotalResults());
+ assertEquals(0, kr.getMatch(0).startPos);
+ assertEquals(3, kr.getMatch(0).endPos);
+ assertEquals(0, kr.getMatch(1).startPos);
+ assertEquals(5, kr.getMatch(1).endPos);
+ assertEquals(1, kr.getMatch(2).startPos);
+ assertEquals(3, kr.getMatch(2).endPos);
+ assertEquals(1, kr.getMatch(3).startPos);
+ assertEquals(4, kr.getMatch(3).endPos);
+ assertEquals(1, kr.getMatch(4).startPos);
+ assertEquals(5, kr.getMatch(4).endPos);
+ assertEquals(2, kr.getMatch(5).startPos);
+ assertEquals(7, kr.getMatch(5).endPos);
+ assertEquals(3, kr.getMatch(6).startPos);
+ assertEquals(5, kr.getMatch(6).endPos);
+ assertEquals(4, kr.getMatch(7).startPos);
+ assertEquals(7, kr.getMatch(7).endPos);
+ }
}