SOLR-5564: hl.maxAlternateFieldLength should apply to original field when fallback field does not exist

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1555035 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jan Høydahl 2014-01-03 09:04:59 +00:00
parent 1587e84b60
commit ca5f42a14e
3 changed files with 18 additions and 1 deletions

View File

@ -197,7 +197,7 @@ Bug Fixes
* SOLR-5577: Likely ZooKeeper expiration should not slow down updates a given * SOLR-5577: Likely ZooKeeper expiration should not slow down updates a given
amount, but instead cut off updates after a given time. amount, but instead cut off updates after a given time.
(Mark Miller, Christine Poerschke) (Mark Miller, Christine Poerschke)
Optimizations Optimizations
---------------------- ----------------------
@ -335,6 +335,9 @@ Bug Fixes
* SOLR-5588: PeerSync doesn't count all connect failures as success. * SOLR-5588: PeerSync doesn't count all connect failures as success.
(Mark Miller) (Mark Miller)
* SOLR-5564: hl.maxAlternateFieldLength should apply to original field when
fallback is attempted (janhoy)
Optimizations Optimizations
---------------------- ----------------------

View File

@ -602,6 +602,10 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf
String alternateField = params.getFieldParam(fieldName, HighlightParams.ALTERNATE_FIELD); String alternateField = params.getFieldParam(fieldName, HighlightParams.ALTERNATE_FIELD);
if (alternateField != null && alternateField.length() > 0) { if (alternateField != null && alternateField.length() > 0) {
StorableField[] docFields = doc.getFields(alternateField); StorableField[] docFields = doc.getFields(alternateField);
if (docFields.length == 0) {
// The alternate field did not exist, treat the original field as fallback instead
docFields = doc.getFields(fieldName);
}
List<String> listFields = new ArrayList<String>(); List<String> listFields = new ArrayList<String>();
for (StorableField field : docFields) { for (StorableField field : docFields) {
if (field.binaryValue() == null) if (field.binaryValue() == null)

View File

@ -660,6 +660,16 @@ public class HighlighterTest extends SolrTestCaseJ4 {
"//lst[@name='highlighting']/lst[@name='1' and count(*)=1]", "//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
"//lst[@name='highlighting']/lst[@name='1']/arr[@name='t_text']/str[.='a piece of text']" "//lst[@name='highlighting']/lst[@name='1']/arr[@name='t_text']/str[.='a piece of text']"
); );
// with a non-existing alternate field + max length
args.put("hl.alternateField", "NonExistingField");
args.put("hl.maxAlternateFieldLength", "15");
sumLRF = h.getRequestFactory("standard", 0, 200, args);
assertQ("Alternate summarization",
sumLRF.makeRequest("tv_text:keyword"),
"//lst[@name='highlighting']/lst[@name='1' and count(*)=1]",
"//lst[@name='highlighting']/lst[@name='1']/arr[@name='t_text']/str[.='a piece of text']"
);
} }
@Test @Test