Refactor snippet generation and fix inline markers in contexts
Change-Id: Iff81bde2b7126e5efb9d664dcb28f65415ee122e
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 27f03c9..257e32c 100644
--- a/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
+++ b/src/test/java/de/ids_mannheim/korap/highlight/TestHighlight.java
@@ -529,7 +529,7 @@
km = kr.getMatch(3);
assertEquals(
- "<span class=\"context-left\"><span class=\"match\"></span></span>",
+ "<span class=\"context-left\"></span><span class=\"match\"></span><span class=\"context-right\"></span>",
km.getSnippetHTML());
};
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 97aa429..39385eb 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -458,7 +458,7 @@
snippet
);
- // Expansion - no context
+ // Expansion - no context but inner match
km = ki.getMatchInfo("match-WPD17/H81/63495-p88-91", "tokens",
"xyz", "s", true, true, true);
snippet = km.getSnippetHTML();
@@ -1138,40 +1138,39 @@
"match-Corpus/Doc/0002-p0-6",
"tokens", "malt", null, true, false);
- assertEquals(
- "SnippetHTML (1)",
- "<span class=\"context-left\">"+
- "</span>"+
- "<span class=\"match\">"+
- "<span xml:id=\"token-Corpus/Doc/0002-p0-6\">"+
- "<mark>"+
- "<span xml:id=\"token-Corpus/Doc/0002-p0\">"+
- "<span xlink:title=\"malt/d:ROOT\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0-6\">Maximen</span>"+
- "</span>"+
- " "+
- "<span xml:id=\"token-Corpus/Doc/0002-p1\">"+
- "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0\">und</span>"+
- "</span>"+
- " "+
- "<span xlink:title=\"malt/d:CJ\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p1\">Reflexionen</span>"+
- " "+
- "<span xml:id=\"token-Corpus/Doc/0002-p3\">"+
- "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0\">Religion</span>"+
- "</span>"+
- " "+
- "<span xml:id=\"token-Corpus/Doc/0002-p4\">"+
- "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p3\">und</span>"+
- "</span>"+
- " "+
- "<span xlink:title=\"malt/d:CJ\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p4\">Christentum</span>"+
- "</mark>"+
- "</span>"+
- "</span>"+
- "<span class=\"context-right\">"+
- "<span class=\"more\"></span>"+
- "</span>",
- km.getSnippetHTML()
- );
+ assertEquals("SnippetHTML (1)",
+ "<span class=\"context-left\"></span>"+
+ "<span class=\"match\">"+
+ "<span xml:id=\"token-Corpus/Doc/0002-p0-6\">"+
+ "<mark>"+
+ "<span xml:id=\"token-Corpus/Doc/0002-p0\">"+
+ "<span xlink:title=\"malt/d:ROOT\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0-6\">Maximen</span>"+
+ "</span>"+
+ " "+
+ "<span xml:id=\"token-Corpus/Doc/0002-p1\">"+
+ "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0\">und</span>"+
+ "</span>"+
+ " "+
+ "<span xlink:title=\"malt/d:CJ\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p1\">Reflexionen</span>"+
+ " "+
+ "<span xml:id=\"token-Corpus/Doc/0002-p3\">"+
+ "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p0\">Religion</span>"+
+ "</span>"+
+ " "+
+ "<span xml:id=\"token-Corpus/Doc/0002-p4\">"+
+ "<span xlink:title=\"malt/d:KON\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p3\">und</span>"+
+ "</span>"+
+ " "+
+ "<span xlink:title=\"malt/d:CJ\" xlink:show=\"none\" xlink:href=\"#token-Corpus/Doc/0002-p4\">Christentum</span>"+
+ "</mark>"+
+ "</span>"+
+ "</span>"+
+ "<span class=\"context-right\">"+
+ "<span class=\"more\"></span>"+
+ "</span>",
+ km.getSnippetHTML()
+ );
+
};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java b/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
index 4492313..fc612ac 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestPagebreakIndex.java
@@ -77,10 +77,12 @@
assertEquals(5, kr.getMatch(2).getStartPos());
assertEquals(6, kr.getMatch(2).getEndPos());
- assertEquals(528, kr.getMatch(2).getStartPage());
- assertEquals("<span class=\"context-left\">abcab</span><span class=\"match\"><mark>c</mark></span><span class=\"context-right\">abac</span>",
+ assertEquals(529, kr.getMatch(2).getStartPage());
+ assertEquals("<span class=\"context-left\"><span class=\"pb\" data-after=\"528\"></span>abcab</span><span class=\"match\"><mark><span class=\"pb\" data-after=\"529\"></span>c</mark></span><span class=\"context-right\">ab<span class=\"pb\" data-after=\"530\"></span>ac</span>",
kr.getMatch(2).getSnippetHTML());
- assertEquals(529, kr.getMatch(2).getEndPage()); // Debatable
+ assertEquals("{%528}abcab[[{%529}c]]ab{%530}ac",
+ kr.getMatch(2).getSnippetBrackets());
+ assertEquals(-1, kr.getMatch(2).getEndPage()); // Debatable
assertEquals(9, kr.getMatch(3).getStartPos());
assertEquals(10, kr.getMatch(3).getEndPos());
@@ -106,10 +108,11 @@
assertEquals(3, kr.getMatch(0).getEndPos());
assertEquals(528, kr.getMatch(0).getStartPage());
assertEquals(-1, kr.getMatch(0).getEndPage());
+
assertEquals(
"snippetHTML",
"<span class=\"context-left\">"+
- // "<span class=\"pb\" data-after=\"528\"></span>"+
+ "<span class=\"pb\" data-after=\"528\"></span>"+
"ab"+
"</span>"+
"<span class=\"match\">"+
@@ -119,15 +122,17 @@
"</span>"+
"<span class=\"context-right\">"+
"ab"+
- // "<span class=\"pb\" data-after=\"528\"></span>"+
+ "<span class=\"pb\" data-after=\"529\"></span>"+
"cab"+
- // "<span class=\"pb\" data-after=\"528\"></span>"+
+ "<span class=\"pb\" data-after=\"530\"></span>"+
"a"+
"<span class=\"more\">"+
"</span>"+
"</span>",
kr.getMatch(0).getSnippetHTML());
+ assertEquals("snippetBrackets","{%528}ab[[c]]ab{%529}cab{%530}a ...",kr.getMatch(0).getSnippetBrackets());
+
QueryBuilder qb = new QueryBuilder("tokens");
sq = qb.seq().append(
qb.repeat(
@@ -139,11 +144,10 @@
assertEquals(sq.toString(), "spanNext(spanRepetition(spanNext(spanNext(tokens:s:a, tokens:s:b), tokens:s:c){2,2}), tokens:s:a)");
-
kr = ki.search(sq, (short) 10);
assertEquals(528, kr.getMatch(0).getStartPage());
- assertEquals(529, kr.getMatch(0).getEndPage());
+ assertEquals(-1, kr.getMatch(0).getEndPage());
assertEquals(
"snippetHTML",
@@ -157,8 +161,10 @@
"</mark>"+
"</span>"+
"<span class=\"context-right\">"+
- "bac"+
+ "b<span class=\"pb\" data-after=\"530\"></span>ac"+
"</span>",
kr.getMatch(0).getSnippetHTML());
+
+ assertEquals("snippetBrackets","[[{%528}abcab{%529}ca]]b{%530}ac",kr.getMatch(0).getSnippetBrackets());
};
};
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 ec38fa4..0b34e56 100644
--- a/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
+++ b/src/test/java/de/ids_mannheim/korap/search/TestKrill.java
@@ -759,7 +759,41 @@
assertEquals(0, kr.getStartIndex());
assertEquals(25, kr.getItemsPerPage());
Match m = kr.getMatch(0);
- assertEquals("<span class=\"context-left\"></span><span class=\"match\"><span class=\"inline-marker\" data-key=\"who\" data-value=\"Mai Thi Nguyen-Kim\"></span><span class=\"inline-marker\" data-key=\"start\" data-value=\"0:00\"></span><span class=\"inline-marker\" data-key=\"end\" data-value=\"01:20\"></span>(<mark>Räuspern</mark></span><span class=\"context-right\">) Wie viele Geschlechter gibt es? Wenn<span class=\"more\"></span></span>", m.getSnippetHTML());
+ assertEquals(
+ "<span class=\"context-left\"><span class=\"inline-marker\" data-key=\"who\" data-value=\"Mai Thi Nguyen-Kim\"></span><span class=\"inline-marker\" data-key=\"start\" data-value=\"0:00\"></span><span class=\"inline-marker\" data-key=\"end\" data-value=\"01:20\"></span>(</span><span class=\"match\"><mark>Räuspern</mark></span><span class=\"context-right\">) Wie viele Geschlechter gibt es? Wenn<span class=\"more\"></span></span>",
+ m.getSnippetHTML());
+
+ assertEquals(
+ "{*who=Mai Thi Nguyen-Kim}{*start=0:00}{*end=01:20}([[Räuspern]]) Wie viele Geschlechter gibt es? Wenn ...",
+ m.getSnippetBrackets());
+
+ ks = new Krill(new QueryBuilder("tokens").seg("s:Geschlechter"));
+ kr = ks.apply(ki);
+
+ assertEquals(5, kr.getTotalResults());
+ assertEquals(0, kr.getStartIndex());
+ assertEquals(25, kr.getItemsPerPage());
+ m = kr.getMatch(0);
+ assertEquals("<span class=\"context-left\"><span class=\"inline-marker\" data-key=\"who\" data-value=\"Mai Thi Nguyen-Kim\"></span><span class=\"inline-marker\" data-key=\"start\" data-value=\"0:00\"></span><span class=\"inline-marker\" data-key=\"end\" data-value=\"01:20\"></span>(Räuspern) Wie viele </span><span class=\"match\"><mark>Geschlechter</mark></span><span class=\"context-right\"> gibt es? Wenn man hierzu öffentliche<span class=\"more\"></span></span>", m.getSnippetHTML());
+
+ assertEquals(
+ "{*who=Mai Thi Nguyen-Kim}{*start=0:00}{*end=01:20}(Räuspern) Wie viele [[Geschlechter]] gibt es? Wenn man hierzu öffentliche ...",
+ m.getSnippetBrackets());
+
+ ks = new Krill(new QueryBuilder("tokens").seg("s:Zunächst"));
+ kr = ks.apply(ki);
+
+ assertEquals(1, kr.getTotalResults());
+ assertEquals(0, kr.getStartIndex());
+ assertEquals(25, kr.getItemsPerPage());
+ m = kr.getMatch(0);
+ assertEquals("<span class=\"context-left\"><span class=\"more\"></span>Perspektiven, die dazu einladen, aneinander vorbeizureden </span><span class=\"match\"><mark><span class=\"inline-marker\" data-key=\"who\" data-value=\"Mai Thi Nguyen-Kim\"></span><span class=\"inline-marker\" data-key=\"start\" data-value=\"0:00\"></span><span class=\"inline-marker\" data-key=\"end\" data-value=\"01:20\"></span>Zunächst</mark></span><span class=\"context-right\"> einmal bezeichnet Geschlecht eine Rolle bei<span class=\"more\"></span></span>", m.getSnippetHTML());
+
+ assertEquals(
+ "... Perspektiven, die dazu einladen, aneinander vorbeizureden [[{*who=Mai Thi Nguyen-Kim}{*start=0:00}{*end=01:20}Zunächst]] einmal bezeichnet Geschlecht eine Rolle bei ...",
+ m.getSnippetBrackets());
+
+
};