如何设置SOLR的高亮 (highlight)?

2019-03-27 01:17|来源: 网路

  • 打开SOLR的核心配置文件: solrconfig.xml

 

  • 找到 standard request handler

 

  • 写入以下XML配置代码:

 

 

 

 

 

  • 其中hl.fl是要高亮显示的字段,比如title,description等。
  • 重启,大功告成
  • 随便检索一个词,看看是不是结果后面多了一个尾巴?

      像这样的:

 

 

 

 

 

  • 刚开始这种怪异的表现方式很不合我的胃口,为什么不把高亮标示直接标示到结果中呢? 另类~~~~
  • 有时间我会给SOLR动一次小手术,转变成适合我们国人使用的高亮~~~

 

 

高亮的配置

参数详细说明:

  • hl.fl: 用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用hl.requiredFieldMatch选项。
  • hl.requireFieldMatch:
    如果置为true,除非该字段的查询结果不为空才会被高亮。它的默认值是false,意味着它可能匹配某个字段却高亮一个不同的字段。如果hl.fl使用了通配符,那么就要启用该参数。尽管如此,如果你的查询是all字段(可能是使用copy-field 指令),那么还是把它设为false,这样搜索结果能表明哪个字段的查询文本未被找到
  • hl.usePhraseHighlighter:
    如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。
  • hl.highlightMultiTerm
    如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。
  • hl.snippets:
    这是highlighted片段的最大数。默认值为1,也几乎不会修改。如果某个特定的字段的该值被置为0(如f.allText.hl.snippets=0),这就表明该字段被禁用高亮了。你可能在hl.fl=*时会这么用。
  • hl.fragsize:
    每个snippet返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。大字段时不会这么做。
  • hl.mergeContiguous:
    如果被置为true,当snippet重叠时会merge起来。
  • hl.maxAnalyzedChars:
    会搜索高亮的最大字符,默认值为51200,如果你想禁用,设为-1
  • hl.alternateField:
    如果没有生成snippet(没有terms 匹配),那么使用另一个字段值作为返回。
  • hl.maxAlternateFieldLength:
    如果hl.alternateField启用,则有时需要制定alternateField的最大字符长度,默认0是即没有限制。所以合理的值是应该为
  • hl.snippets * hl.fragsize这样返回结果的大小就能保持一致。
  • hl.formatter:一个提供可替换的formatting算法的扩展点。默认值是simple,这是目前仅有的选项。显然这不够用,你可以看看org.apache.solr.highlight.HtmlFormatter.java 和 solrconfig.xml中highlighting元素是如何配置的。
    注意在不论原文中被高亮了什么值的情况下,如预先已存在的em tags,也不会被转义,所以在有时会导致假的高亮。
  • hl.fragmenter:
    这个是solr制定fragment算法的扩展点。gap是默认值。regex是另一种选项,这种选项指明highlight的边界由一个正则表达式确定。这是一种非典型的高级选项。为了知道默认设置和fragmenters (and formatters)是如何配置的,可以看看solrconfig.xml中的highlight段。
    regex 的fragmenter有如下选项:
  • hl.regex.pattern:正则表达式的pattern
  • hl.regex.slop:这是hl.fragsize能变化以适应正则表达式的因子。默认值是0.6,意思是如果hl.fragsize=100那么fragment的大小会从40-160.

转自:http://blog.csdn.net/thundersssss/article/details/5369654

相关问答

更多
  • 您好,您这样: 1 @Test 2 public void test5(){ 3 try { 4 SolrQuery query=new SolrQuery("程序"); 5 query.setHighlight(true) 6 .setHighlightSimplePre("")//设置开头 7 .setHighlightSimplePost("") //设置结尾 8 .setStart(0) 9 .setRows...
  • hl.fl: 用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。 1 @Test 2 public void test5(){ 3 try { 4 SolrQuery query=new SolrQuery("程序"); 5 query.setHighlight(true) 6 .setHigh ...
  • 1 @Test 2 public void test5(){ 3 try { 4 SolrQuery query=new SolrQuery("程序"); 5 query.setHighlight(true) 6 .setHighlightSimplePre("")//设置开头 7 .setHighlightSimplePost("") //设置结尾 8 .setStart(0) 9 .setRows(10);//设置行数 10 //设置高亮的哪些区域 11 query.setParam("hl.fl", ...
  • 重启,大功告成随便检索一个词,看看是不是结果后面多了一个尾巴? 像这样的: Standards Based Open Interfaces - XML and HTTP Scalability - Efficient Replication to other Solr Search Servers Flexible and Adaptable with XML configuration and Schema SOLR1000 刚开始这种怪异的表现方式很不合我的胃口,为什么不把高亮标示直接标示到结果中呢? ...
  • 不要忘记先设置风格! (自iOS 8起): cell.selectionStyle = UITableViewCellSelectionStyleDefault; 在iOS 8之前,这是要走的路: cell.selectionStyle = UITableViewCellSelectionStyleNone; This ended up being the solution: UIView *highlightView = [[UIView alloc] init]; highlightView.bac ...
  • 你可以在这里找到答案。 或者显然有些文件无法找到它似乎是一个安装问题。 可能会在这里找到更多 You might find your answer here. alternatively apparently some file can't be found it seems like an installation issue. might find more here
  • 我将标记化器从WhiteSpaceTokenizerFactory更改为NGramTokenizerFactory并删除了NGramFilterFactory - >现在它(几乎)按预期工作 I changed the tokenizer from WhiteSpaceTokenizerFactory to NGramTokenizerFactory and removed the NGramFilterFactory -> now it's (almost) working as expected
  • 正如评论中所述:help 'highlight'有您的答案。 每个参数都是一对类型模式参数。 您列出的每对货币的含义是: 8b special characters for :map (eg ) are bold @- ~ characters after eof, along with some other special symbols, are not formatted db directories are bold es errors are standout lb last search ...
  • BarDataSet扩展了BarLineScatterCandleBubbleDataSet ,它具有setHighLightColor方法: /** * Sets the color that is used for drawing the highlight indicators. Dont * forget to resolve the color using getResources().getColor(...) or * Color.rgb(...). * * @param colo ...
  • 我认为没有任何方法可以完全按照您的要求进行操作,除非后期处理由您决定,对于较大的结果集效率不高。 也许你应该问一个不同的问题,即使返回的文件实际上是完全不同的,即使这些片段是相同的。 如果文件不同,可能会显示所有文件的价值,而不是重复删除。 您可以尝试增强搜索结果显示以显示有关文档的更多信息,以便用户可以区分它们 - 可能不依赖于突出显示,但也显示文档的其他部分? 我确实认为,问题的核心是需要在站点样板中找到与在其他地方找到的匹配相关的匹配。 通常相关性排名可以很好地解决这个问题,因为常用术语对于相关性排名 ...