mirror of https://github.com/apache/lucene.git
SOLR-9935: UnifiedHighlighter, when hl.fragsize=0 don't do fragmenting
This commit is contained in:
parent
43874fc5b5
commit
ed513fdee7
|
@ -295,6 +295,13 @@ public class UnifiedSolrHighlighter extends SolrHighlighter implements PluginInf
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected BreakIterator getBreakIterator(String field) {
|
protected BreakIterator getBreakIterator(String field) {
|
||||||
|
// Use a default fragsize the same as the regex Fragmenter (original Highlighter) since we're
|
||||||
|
// both likely shooting for sentence-like patterns.
|
||||||
|
int fragsize = params.getFieldInt(field, HighlightParams.FRAGSIZE, LuceneRegexFragmenter.DEFAULT_FRAGMENT_SIZE);
|
||||||
|
if (fragsize == 0) { // special value; no fragmenting
|
||||||
|
return new WholeBreakIterator();
|
||||||
|
}
|
||||||
|
|
||||||
String language = params.getFieldParam(field, HighlightParams.BS_LANGUAGE);
|
String language = params.getFieldParam(field, HighlightParams.BS_LANGUAGE);
|
||||||
String country = params.getFieldParam(field, HighlightParams.BS_COUNTRY);
|
String country = params.getFieldParam(field, HighlightParams.BS_COUNTRY);
|
||||||
String variant = params.getFieldParam(field, HighlightParams.BS_VARIANT);
|
String variant = params.getFieldParam(field, HighlightParams.BS_VARIANT);
|
||||||
|
@ -302,9 +309,6 @@ public class UnifiedSolrHighlighter extends SolrHighlighter implements PluginInf
|
||||||
String type = params.getFieldParam(field, HighlightParams.BS_TYPE);
|
String type = params.getFieldParam(field, HighlightParams.BS_TYPE);
|
||||||
BreakIterator baseBI = parseBreakIterator(type, locale);
|
BreakIterator baseBI = parseBreakIterator(type, locale);
|
||||||
|
|
||||||
// Use a default fragsize the same as the regex Fragmenter (original Highlighter) since we're
|
|
||||||
// both likely shooting for sentence-like patterns.
|
|
||||||
int fragsize = params.getFieldInt(field, HighlightParams.FRAGSIZE, LuceneRegexFragmenter.DEFAULT_FRAGMENT_SIZE);
|
|
||||||
if (fragsize <= 1 || baseBI instanceof WholeBreakIterator) { // no real minimum size
|
if (fragsize <= 1 || baseBI instanceof WholeBreakIterator) { // no real minimum size
|
||||||
return baseBI;
|
return baseBI;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ public class TestUnifiedSolrHighlighter extends SolrTestCaseJ4 {
|
||||||
assertU(commit());
|
assertU(commit());
|
||||||
assertQ("multiple snippets test",
|
assertQ("multiple snippets test",
|
||||||
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.snippets", "2", "hl.bs.type", "SENTENCE",
|
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.snippets", "2", "hl.bs.type", "SENTENCE",
|
||||||
"hl.fragsize", "0"),
|
"hl.fragsize", "-1"),
|
||||||
"count(//lst[@name='highlighting']/lst[@name='101']/arr[@name='text']/*)=2",
|
"count(//lst[@name='highlighting']/lst[@name='101']/arr[@name='text']/*)=2",
|
||||||
"//lst[@name='highlighting']/lst[@name='101']/arr/str[1]='<em>Document</em> snippet one. '",
|
"//lst[@name='highlighting']/lst[@name='101']/arr/str[1]='<em>Document</em> snippet one. '",
|
||||||
"//lst[@name='highlighting']/lst[@name='101']/arr/str[2]='<em>Document</em> snippet two.'");
|
"//lst[@name='highlighting']/lst[@name='101']/arr/str[2]='<em>Document</em> snippet two.'");
|
||||||
|
@ -214,9 +214,12 @@ public class TestUnifiedSolrHighlighter extends SolrTestCaseJ4 {
|
||||||
public void testBreakIteratorWhole() {
|
public void testBreakIteratorWhole() {
|
||||||
assertU(adoc("text", "Document one has a first sentence. Document two has a second sentence.", "id", "103"));
|
assertU(adoc("text", "Document one has a first sentence. Document two has a second sentence.", "id", "103"));
|
||||||
assertU(commit());
|
assertU(commit());
|
||||||
assertQ("different breakiterator",
|
assertQ("WHOLE breakiterator",
|
||||||
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.bs.type", "WHOLE", "hl.fragsize", "-1"),
|
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.bs.type", "WHOLE", "hl.fragsize", "-1"),
|
||||||
"//lst[@name='highlighting']/lst[@name='103']/arr[@name='text']/str='<em>Document</em> one has a first sentence. <em>Document</em> two has a second sentence.'");
|
"//lst[@name='highlighting']/lst[@name='103']/arr[@name='text']/str='<em>Document</em> one has a first sentence. <em>Document</em> two has a second sentence.'");
|
||||||
|
assertQ("hl.fragsize 0 is equivalent to WHOLE",
|
||||||
|
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.fragsize", "0"),
|
||||||
|
"//lst[@name='highlighting']/lst[@name='103']/arr[@name='text']/str='<em>Document</em> one has a first sentence. <em>Document</em> two has a second sentence.'");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFragsize() {
|
public void testFragsize() {
|
||||||
|
|
Loading…
Reference in New Issue