[ http://issues.apache.org/jira/browse/SOLR-37?page=comments#action_12431618 ] Andrew May commented on SOLR-37: --------------------------------
I guess I need to number my patch files as they don't seem to get listed in the order they were added and I can't remove old ones. The new patch appears to be number 3. > Add additional configuration options for Highlighting > ----------------------------------------------------- > > Key: SOLR-37 > URL: http://issues.apache.org/jira/browse/SOLR-37 > Project: Solr > Issue Type: Improvement > Components: search > Reporter: Andrew May > Attachments: patch, patch, patch.diff, patch.diff > > > As discussed in the mailing list, I've been looking at adding additional > configuration options for highlighting. > I've made quite a few changes to the properties for highlighting: > Properties that can be set on request, or in solrconfig.xml at the top level: > highlight (true/false) > highlightFields > Properties that can be set in solrconfig.xml at the top level or per-field > formatter (simple/gradient) > formatterPre (preTag for simple formatter) > formatterPost (postTag for simple formatter) > formatterMinFgCl (min foreground colour for gradient formatter) > formatterMaxFgCl (max foreground colour for gradient formatter) > formatterMinBgCl (min background colour for gradient formatter) > formatterMaxBgCl (max background colour for gradient formatter) > fragsize (if <=0 use NullFragmenter, otherwise use GapFragmenter with this > value) > I've added variables for these values to CommonParams, plus there's a fields > Map<String,CommonParams> that is parsed from nested NamedLists (i.e. a lst > named "fields", with a nested lst for each field). > Here's a sample of how you can mix and match properties in solrconfig.xml: > <requestHandler name="hl" class="solr.StandardRequestHandler" > > <str name="formatter">simple</str> > <str name="formatterPre"><i></str> > <str name="formatterPost"></i></str> > <str name="highlightFields">title,authors,journal</str> > <int name="fragsize">0</int> > <lst name="fields"> > <lst name="abstract"> > <str name="formatter">gradient</str> > <str name="formatterMinBgCl">#FFFF99</str> > <str name="formatterMaxBgCl">#FF9900</str> > <int name="fragsize">30</int> > <int name="maxSnippets">2</int> > </lst> > <lst name="authors"> > <str name="formatterPre"><strong></str> > <str name="formatterPost"></strong></str> > </lst> > </lst> > </requestHandler> > I've created HighlightingUtils to handle most of the parameter parsing, but > the hightlighting is still done in SolrPluginUtils and the > doStandardHighlighting() method still has the same signature, but the other > highlighting methods have had to be changed (because highlighters are now > created per highlighted field). > I'm not particularly happy with the code to pull parameters from > CommonParams, first checking the field then falling back, e.g.: > String pre = (params.fields.containsKey(fieldName) && > params.fields.get(fieldName).formatterPre != null) ? > params.fields.get(fieldName).formatterPre : > params.formatterPre != null ? params.formatterPre : "<em>"; > I've removed support for a custom formatter - just choosing between > simple/gradient. Probably that's a bad decision, but I wanted an easy way to > choose between the standard formatters without having to invent a generic way > of supplying arguments for the constructor. Perhaps there should be > formatterType=simple/gradient and formatterClass=... which overrides > formatterType if set at a lower level - with the formatterClass having to > have a zero-args constructor? Note: gradient is actually > SpanGradientFormatter. > I'm not sure I properly understand how Fragmenters work, so supplying > fragsize to GapFragmenter where >0 (instead of what was a default of 50) may > not make sense. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira