设为首页 收藏本站
查看: 1123|回复: 0

[经验分享] Solr 6.7学习笔记(05)

[复制链接]

尚未签到

发表于 2017-12-19 09:48:42 | 显示全部楼层 |阅读模式
  搜索结果高亮显示是搜索引擎中的常用功能,在Solr中,我们可以如下配置:
  

<requestHandler name="/select">  <lst name="defaults">
  <str name="echoParams">explicit</str>
  <str name="rows">10</str>
  <str name="df">text</str>
  <!-- Highlighting defaults -->
  <str name="hl">true</str>
  <str name="hl.method">original</str>
  <str name="hl.fl">content filename filepath</str>
  <str name="hl.preserveMulti">true</str>
  <str name="hl.encoder">html</str>
  <str name="hl.simple.pre">&lt;b&gt;</str>
  <str name="hl.simple.post">&lt;/b&gt;</str>
  <str name="f.filename.hl.fragsize">0</str>
  <str name="f.filename.hl.alternateField">filename</str>
  <str name="f.filepath.hl.fragsize">0</str>
  <str name="f.filepath.hl.alternateField">filepath</str>
  <str name="f.content.hl.snippets">3</str>
  <str name="f.content.hl.fragsize">200</str>
  <str name="f.content.hl.alternateField">content</str>
  <str name="f.content.hl.maxAlternateFieldLength">750</str>
  </lst>
  </requestHandler>
  

  常用的一些属性:

参数
默认值
描述
hl
false
如需启用highlighting,设置为true
hl.method
original
highlighting的实现方式。有四个值可选:unified, original, fastVector, postings
hl.fl
(df=)
指定需要高亮的一些字段。字段之间用空格或逗号分隔。可以使用*号(e.g. text_*), 使用*号时,建议把hl.requireFieldMatch设为TRUE
hl.q
(q=)
高亮的查询语句,默认值等于查询语句。一般都是查询什么,结果集中就高亮什么,还没看到需要另外设置的情况
hl.qparser
(defType)
hl.q的分析器
hl.requireFieldMatch
false
默认情况下,如果查询中指定了查询哪个field,但是还是会高亮所有hl.fl中指定的field。如果设置为true, 将会只高亮查询中的field。
hl.usePhraseHighlighter
true
为true时,短语做为一个整体被高亮。为false时,短语中的每个单词都会被单独高亮。
hl.highlightMultiTerm
true
为true时,高亮通配符查询
hl.snippets
1
指定每个字段中,最多高亮的片断。
hl.fragsize
100
返回搜索结果的最大长度。如常见的搜索引擎中,搜索结果只展示了部分文本,不可能把整篇文章都显示出来。需要点击进去才会显示全部
hl.tag.pre
<em>
如果hl.method为original,此参数应该是hl.simple.pre。此值通常是HTML或XML标签
hl.tag.post
</em>
如果hl.method为original,此参数应该是hl.simple.post。
hl.encoder
(blank)
如果为空,返回的文本不会被编码。如果设置为html,则返回的文本中如果包含html/xml的特殊字符的话,将会被转化 (e.g.  & --> &amp;)
hl.maxAnalyzedChars
51200
高亮匹配的最大长度。如果某个文本符合搜索条件,但是搜索结果的前51200里面不包含搜索的内容,则不会继续往后去高亮匹配的内容。  不同的hl.method,还会有不同的参数。需要用到的时候再去查询文档。
  当我们输入多个单词,希望在搜索结果里不同的单词用不同的背景色显示。在Solr的样例配置中,发现<searchComponent name="highlight">下面有一段
  <fragmentsBuilder name="colored">的配置。查看文档,发现当hl.method=fastVector时,才会有hl.fragmentsBuilder的配置。文档中也有提到,如果hl.method=original的话,只要设置f.yourTermVectorField.hl.method=fastVector,也可以使用fastVector的属性。最后更改后的设置如下:
  

<requestHandler name="/select">  <lst name="defaults">
  <str name="echoParams">explicit</str>
  <str name="rows">10</str>
  <str name="df">text</str>
  <!-- Highlighting defaults -->
  <str name="hl">true</str>
  <str name="hl.method">original</str>
  <str name="hl.fl">content filename</str>
  <str name="hl.preserveMulti">true</str>
  <str name="hl.encoder">html</str>
  <str name="hl.fragmentsBuilder">colored</str>
  <str name="f.filename.hl.fragsize">100</str>
  <str name="f.filename.hl.alternateField">filename</str>
  <str name="f.filename.hl.method">fastVector</str>
  <str name="f.content.hl.snippets">3</str>
  <str name="f.content.hl.fragsize">200</str>
  <str name="f.content.hl.alternateField">content</str>
  <str name="f.content.hl.maxAlternateFieldLength">750</str>
  <str name="f.content.hl.method">fastVector</str>
  </lst>
  </requestHandler>
  

  注意:1. 使用 fastVector的字段,四个属性(termVectors, termPositions, termOffsets, termPayloads)必须都为true,且indexed必须也是true。
  2. 另外,f.field.hl.fragsize必须设置一个>=18的数,要不然会报如下的exception:
  org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://localhost:8983/solr/fileSearch: fragCharSize(0) is too small. It must be 18 or higher.
  3. <fragmentsBuilder name="colored"> 中配置一个 “background:lawgreen”的背景色,可是在Chrome里无法显示。导致我一开始以为是设置有问题。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425613-1-1.html 上篇帖子: Solr 6.7学习笔记(04) 下篇帖子: solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表