• 打开SOLR的核心配置文件: solrconfig.xml
  • 找到 standard request handler
  • 写入以下XML配置代码:
  1. <requestHandler name="standard" class="solr.SearchHandler" default="true">
  2. <!-- default values for query parameters -->
  3. <lst name="defaults">
  4. <str name="echoParams">explicit</str>
  5. <bool name="hl">true</bool>
  6. <str name="hl.fl">title</str>
  7. <int name="hl.snippets">3</int>
  8. <!--
  9. <int name="rows">10</int>
  10. <str name="fl">*</str>
  11. <str name="version">2.1</str>
  12. -->
  13. </lst>
  14. </requestHandler>
  • 其中hl.fl是要高亮显示的字段,比如title,description等。
  • 重启,大功告成
  • 随便检索一个词,看看是不是结果后面多了一个尾巴?

像这样的:

  1. <lst name="highlighting">
  2. <lst name="SOLR1000">
  3. <arr name="features">
  4. <str>Standards Based Open Interfaces - <em>XML</em> and HTTP</str>
  5. <str>Scalability - Efficient Replication to other <em>Solr</em> Search Servers</str>
  6. <str>Flexible and Adaptable with <em>XML</em> configuration and Schema</str>
  7. </arr>
  8. <arr name="sku">
  9. <str><em>SOLR</em>1000</str>
  10. </arr>
  11. </lst>
  • 刚开始这种怪异的表现方式很不合我的胃口,为什么不把高亮标示直接标示到结果中呢? 另类~~~~
  • 有时间我会给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.

如何设置SOLR的高亮 (highlight)?的更多相关文章

  1. ubuntu 12.04 lts安装golang并设置vim语法高亮

    安装golang sudo apt-get install golang 设置vim语法高亮 sudo apt-get install vim-gocomplete gocode vim-syntax ...

  2. visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色

    这是一个很实用的功能,默认的设置里不是很明显,设置完之后效果图如下: 具体设置方法是: 1. 菜单:工具  -> 选项  ->环境  ->字体和颜色 2. 在右边的 "显示 ...

  3. codeblocks设置当前行高亮

    默认是不开启当前行高亮的. 如果想打开,选择:Settings>Editor>Editor Settings>Other options> 勾选Highlight line u ...

  4. mac vim设置python语法高亮

    1 "显示行号  2 set nu  3   4 "设置缩进tabstop  5 set ts=4  6 set shiftwidth=4  7 set expandtab  8 ...

  5. nssm设置solr开机启动服务

    首先,下载nssm http://www.nssm.cc/download 命令 nssm install solr 然后到服务里启动solr,并设置为自动 Ctrl+Shift+Esc(说明:Esc ...

  6. VS2010和选中代码相同的代码的颜色设置,修改高亮颜色

    使用Visual Studio 2010, 发现很难看清非活动的选中代码,研究了下,发现以下方法可以设置: 1. 菜单:工具  -> 选项  ->环境  ->字体和颜色 2. 在右边 ...

  7. Notepad++ - 通过语言格式设置自定义语法高亮颜色

    http://blog.csdn.net/onceing/article/details/51554399 Global Styles Indent guideline style  缩进参考线的颜色 ...

  8. vim设置golang语法高亮 (Centos)

    Go语言自带vim 的语法高亮文件. http://www.golangtc.com/download 下载   go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩 ...

  9. 设置Shader关键字高亮(网上转)

    原文链接:http://www.cnblogs.com/cg_ghost/archive/2011/11/30/2268734.html 经过试验,在VS2012有效. 1. 创建或编辑usertyp ...

随机推荐

  1. python 调用函数 / 类型转换 / 切片/ 迭代

    调用函数 / 类型转换 /  切片/ 迭代 1. 调用函数:abs(),max(),min() 2. 数据类型转换:int(),float(),str(),tool(),a=abs, 3. 定义函数, ...

  2. 【Unity笔记】检测当前的运行平台

    // 判断当前运行平台为Android平台时 if (Application.platform == RuntimePlatform.Android) { if (Input.GetKeyDown(K ...

  3. 【C#】允许泛型方法<T>返回空值Null

    在设计一个返回类型为T的泛型方法时,有时希望能返回空Null,然后会报错: 根据提示,将返回值由Null改为default(T)即可. default(T)表示返回当前T类型的默认值,如果T为int则 ...

  4. Android——Handler 多线程

    java 打开界面 实现图片轮播 //Handler final ImageView iv_2 = (ImageView)findViewById(R.id.iv_2); final int[] im ...

  5. CentOS安装redmine 2后的简单配置

    CentOS5.4安装redmine详细步骤 http://blog.csdn.net/leekwen/article/details/8516832 <<<<输出日志的配置& ...

  6. 轻松学习之Linux教程二 一览纵山小:Linux操作系统具体解释

    本系列文章由@uid=hpw" style="padding:0px; margin:0px; color:rgb(255,0,0); text-decoration:none&q ...

  7. 从实例中学习grid布局

    对于Web开发者来说,网页布局一直是个比较重要的问题. Web 布局主要经历了以下四个阶段: 1.table表格布局: 2.float浮动及position定位布局: 3.flex弹性盒模型布局,革命 ...

  8. ElasticSearch使用代码

    package elasticsearch01; import static org.junit.Assert.*; import java.util.HashMap; import java.uti ...

  9. hbase权威指南阅读随手笔记二之过滤器

    转自:http://blog.csdn.net/saint1126/article/details/8257941 base过滤器的比较操作符:   LESS  <LESS_OR_EQUAL & ...

  10. 各个层次的gcc警告

    http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attri ...