@Test public void testLinesSpanningMatchFormatted() { Passage p = new Passage(); p.setStartOffset(0); p.setEndOffset(DOC2.length()); p.addMatch(0, p.getEndOffset(), new BytesRef(DOC2),1); assertEquals("getNumMatches()", 1, p.getNumMatches()); /** * We're using the entire document, but see how it behaves with * contextCount==1 */ ContextArgs args = new ContextArgs((short)1, (short)10); ContextFormatter fmt = new ContextFormatter(args); fmt.setUrl("http://example.com"); Object res = fmt.format(new Passage[] {p}, DOC2); assertNotNull("format() result", res); final String DOC2CTX = "<a class=\"s\" href=\"http://example.com#1\"><span class=\"l\">" + "1</span> <b>abc</b></a><br/>" + "<a class=\"s\" href=\"http://example.com#2\"><span class=\"l\">" + "2</span> <b>def</b></a><br/>" + "<a class=\"s\" href=\"http://example.com#3\"><span class=\"l\">" + "3</span> <b>ghi</b></a><br/>"; String ctx = res.toString(); assertLinesEqual("format().toString()", DOC2CTX, ctx); }
int start = passage.getStartOffset(); int end = passage.getEndOffset(); if (start >= end) { continue; for (int i = 0; i < passage.getNumMatches(); ++i) { int mstart = passage.getMatchStarts()[i]; int mm = splitter.findLineOffset(mstart); int mend = passage.getMatchEnds()[i]; int nn = splitter.findLineOffset(mend - 1); if (mstart < mend && mm >= m && mm <= n && nn >= m && nn <= n) {
Passage passage = new Passage(); passage.setScore(Float.NaN); passage.setStartOffset(pos); passage.setEndOffset(end); return new Passage[]{passage};
Passage passage = new Passage(); passage.setScore(Float.NaN); passage.setStartOffset(pos); passage.setEndOffset(end); return new Passage[]{passage};
PHRASE.length() + LF_CHAR_COUNT, "*")); Passage p = new Passage(); p.setStartOffset(phOff); p.setEndOffset(phOff + STARS.length()); p.addMatch(phOff, p.getEndOffset(), new BytesRef(STARS),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
Passage passage = passages[j]; StringBuilder sb = new StringBuilder(); pos = passage.getStartOffset(); for (int i = 0; i < passage.getNumMatches(); i++) { int start = passage.getMatchStarts()[i]; int end = passage.getMatchEnds()[i]; append(sb, content, pos, Math.max(pos, passage.getEndOffset())); snippets[j] = new Snippet(sb.toString().trim(), passage.getScore(), passage.getNumMatches() > 0);
Passage passage = new Passage(); passage.setScore(Float.NaN); passage.setStartOffset(pos); passage.setEndOffset(end); return new Passage[]{passage};
@Test public void testOneWord() { final String WORD = "gravida"; int woff = DOC.indexOf(WORD); assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches()); PassageConverter cvt = getConverter((short)0); SortedMap<Integer, LineHighlight> linemap = cvt.convert(new Passage[] {p}, splitter); assertEquals("linemap size()", 1, linemap.size()); int lineno = linemap.firstKey(); assertEquals("lineno", 2, lineno); LineHighlight lhi = linemap.get(lineno); assertNotNull("get LineHighlight", lhi); assertEquals("getLelide()", 0, lhi.getLelide()); assertEquals("getRelide()", 0, lhi.getRelide()); assertEquals("countMarkups()", 1, lhi.countMarkups()); PhraseHighlight phi = lhi.getMarkup(0); assertNotNull("get PhraseHighlight", phi); assertEquals("getLineStart()", 32, phi.getLineStart()); assertEquals("getLineEnd()", 32 + WORD.length(), phi.getLineEnd()); }
Passage passage = passages[j]; StringBuilder sb = new StringBuilder(); pos = passage.getStartOffset(); for (int i = 0; i < passage.getNumMatches(); i++) { int start = passage.getMatchStarts()[i]; int end = passage.getMatchEnds()[i]; append(sb, content, pos, Math.max(pos, passage.getEndOffset())); snippets[j] = new Snippet(sb.toString().trim(), passage.getScore(), passage.getNumMatches() > 0);
Passage passage = new Passage(); passage.setScore(Float.NaN); passage.setStartOffset(pos); passage.setEndOffset(end); return new Passage[]{passage};
assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
Passage passage = passages[j]; StringBuilder sb = new StringBuilder(); pos = passage.getStartOffset(); for (int i = 0; i < passage.getNumMatches(); i++) { int start = passage.getMatchStarts()[i]; int end = passage.getMatchEnds()[i]; append(sb, content, pos, Math.max(pos, passage.getEndOffset())); snippets[j] = new Snippet(sb.toString().trim(), passage.getScore(), passage.getNumMatches() > 0);
@Test public void testOneWordElided() { final String WORD = "dignissim"; int woff = DOC.indexOf(WORD); assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches()); PassageConverter cvt = getConverter((short)0); SortedMap<Integer, LineHighlight> linemap = cvt.convert(new Passage[] {p}, splitter); assertEquals("linemap size()", 1, linemap.size()); int lineno = linemap.firstKey(); assertEquals("lineno", 5, lineno); LineHighlight lhi = linemap.get(lineno); assertNotNull("get LineHighlight", lhi); assertEquals("getLelide()", 41, lhi.getLelide()); assertEquals("getRelide()", 139, lhi.getRelide()); assertEquals("context width minus 2", 139 - 41, cvt.getArgs().getContextWidth() - 2); assertEquals("countMarkups()", 1, lhi.countMarkups()); PhraseHighlight phi = lhi.getMarkup(0); assertNotNull("get PhraseHighlight", phi); assertEquals("getLineStart()", 113, phi.getLineStart()); assertEquals("getLineEnd()", 113 + WORD.length(), phi.getLineEnd()); }
Passage passage = passages[j]; StringBuilder sb = new StringBuilder(); pos = passage.getStartOffset(); for (int i = 0; i < passage.getNumMatches(); i++) { int start = passage.getMatchStarts()[i]; int end = passage.getMatchEnds()[i]; append(sb, content, pos, Math.max(pos, passage.getEndOffset())); snippets[j] = new Snippet(sb.toString().trim(), passage.getScore(), passage.getNumMatches() > 0);
assertTrue(WORD2, woff2 >= 0); Passage p = new Passage(); p.setStartOffset(woff1); p.setEndOffset(woff2 + WORD2.length()); p.addMatch(woff1, woff1 + WORD1.length(), new BytesRef(WORD1),1); p.addMatch(woff2, woff2 + WORD2.length(), new BytesRef(WORD2),1); assertEquals("getNumMatches()", 2, p.getNumMatches());
assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
assertTrue(WORD, woff >= 0); Passage p = new Passage(); p.setStartOffset(woff); p.setEndOffset(woff + WORD.length()); p.addMatch(woff, p.getEndOffset(), new BytesRef(WORD),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
assertTrue(PHRASE, poff >= 0); Passage p = new Passage(); p.setStartOffset(poff); p.setEndOffset(poff + PHRASE.length()); p.addMatch(poff, p.getEndOffset(), new BytesRef(PHRASE),1); assertEquals("getNumMatches()", 1, p.getNumMatches());
@Test public void testLinesSpanningMatch() { Passage p = new Passage(); p.setStartOffset(0); p.setEndOffset(DOC2.length()); p.addMatch(0, p.getEndOffset(), new BytesRef(DOC2),1); assertEquals("getNumMatches()", 1, p.getNumMatches());