mirror of https://github.com/apache/lucene.git
SOLR-11399: hl.fragsize was ignored when hl.bs.type=SEPARATOR
This commit is contained in:
parent
6fe7829d3e
commit
3b0f46b27d
|
@ -148,6 +148,9 @@ Bug Fixes
|
||||||
* SOLR-11297: Message "Lock held by this virtual machine" during startup. Solr is trying to start some cores twice.
|
* SOLR-11297: Message "Lock held by this virtual machine" during startup. Solr is trying to start some cores twice.
|
||||||
(Luiz Armesto, Shawn Heisey, Erick Erickson)
|
(Luiz Armesto, Shawn Heisey, Erick Erickson)
|
||||||
|
|
||||||
|
* SOLR-11399: The UnifiedHighlighter was ignoring the hl.fragsize parameter when hl.bs.type=SEPARATOR
|
||||||
|
(Marc Morissette via David Smiley)
|
||||||
|
|
||||||
|
|
||||||
Optimizations
|
Optimizations
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -310,15 +310,19 @@ public class UnifiedSolrHighlighter extends SolrHighlighter implements PluginInf
|
||||||
String type = params.getFieldParam(field, HighlightParams.BS_TYPE);
|
String type = params.getFieldParam(field, HighlightParams.BS_TYPE);
|
||||||
if (fragsize == 0 || "WHOLE".equals(type)) { // 0 is special value; no fragmenting
|
if (fragsize == 0 || "WHOLE".equals(type)) { // 0 is special value; no fragmenting
|
||||||
return new WholeBreakIterator();
|
return new WholeBreakIterator();
|
||||||
} else if ("SEPARATOR".equals(type)) {
|
|
||||||
char customSep = parseBiSepChar(params.getFieldParam(field, HighlightParams.BS_SEP));
|
|
||||||
return new CustomSeparatorBreakIterator(customSep);
|
|
||||||
}
|
}
|
||||||
String language = params.getFieldParam(field, HighlightParams.BS_LANGUAGE);
|
|
||||||
String country = params.getFieldParam(field, HighlightParams.BS_COUNTRY);
|
BreakIterator baseBI;
|
||||||
String variant = params.getFieldParam(field, HighlightParams.BS_VARIANT);
|
if ("SEPARATOR".equals(type)) {
|
||||||
Locale locale = parseLocale(language, country, variant);
|
char customSep = parseBiSepChar(params.getFieldParam(field, HighlightParams.BS_SEP));
|
||||||
BreakIterator baseBI = parseBreakIterator(type, locale);
|
baseBI = new CustomSeparatorBreakIterator(customSep);
|
||||||
|
} else {
|
||||||
|
String language = params.getFieldParam(field, HighlightParams.BS_LANGUAGE);
|
||||||
|
String country = params.getFieldParam(field, HighlightParams.BS_COUNTRY);
|
||||||
|
String variant = params.getFieldParam(field, HighlightParams.BS_VARIANT);
|
||||||
|
Locale locale = parseLocale(language, country, variant);
|
||||||
|
baseBI = parseBreakIterator(type, locale);
|
||||||
|
}
|
||||||
|
|
||||||
if (fragsize <= 1) { // no real minimum size
|
if (fragsize <= 1) { // no real minimum size
|
||||||
return baseBI;
|
return baseBI;
|
||||||
|
|
|
@ -256,6 +256,9 @@ public class TestUnifiedSolrHighlighter extends SolrTestCaseJ4 {
|
||||||
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.bs.type", "SEPARATOR","hl.bs.separator","#","hl.fragsize", "-1"),
|
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.bs.type", "SEPARATOR","hl.bs.separator","#","hl.fragsize", "-1"),
|
||||||
"//lst[@name='highlighting']/lst[@name='104']/arr[@name='text']/str='While the other <em>document</em> contains the same #'");
|
"//lst[@name='highlighting']/lst[@name='104']/arr[@name='text']/str='While the other <em>document</em> contains the same #'");
|
||||||
|
|
||||||
|
assertQ("CUSTOM breakiterator with fragsize 70",
|
||||||
|
req("q", "text:document", "sort", "id asc", "hl", "true", "hl.bs.type", "SEPARATOR","hl.bs.separator","#","hl.fragsize", "70"),
|
||||||
|
"//lst[@name='highlighting']/lst[@name='103']/arr[@name='text']/str='This <em>document</em> contains # special characters, while the other <em>document</em> contains the same #'");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFragsize() {
|
public void testFragsize() {
|
||||||
|
|
Loading…
Reference in New Issue