solr对于多值的field高亮问题

finemi 2015-12-10 01:53:50
solr的highlight只会返回他高亮了的字段,并且这个字段如果是多值的话,那么只会反回这个多值字段中被高亮的值。

当我需要高亮时:
1.对于单值的字段来说,没有问题,直接通过highlight结果集中的文档id、field名 和 查询结果集的 if、field名对比,用highlight的结果替换相应的查询结果就是。
2.对于多值的字段来说,就会有问题:highlight结果集中多值字段只有高亮的那些值,而并不是这个字段的所有值,且是一个Collection,并不是map有个key。这样我就无法用highlight的结果来替换我的查询结果。
查询语句:

查询结果集:

高亮结果集:


请问这个问题如何结果?
...全文
430 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
韩大帅=。= 2019-10-18
  • 打赏
  • 举报
回复
楼主我特别好奇,你这个结果为什么是多值的
上官月 2019-03-01
  • 打赏
  • 举报
回复
那个 &hl.preserveMulti=true 是输出到控制台上吗
夏o漠 2016-07-01
  • 打赏
  • 举报
回复
和楼上遇到了同样的问题。对多值字段的单一条件搜索,如果有多个匹配,都可以高亮。但是对多值字段的多条件搜索,就只能高亮第一个搜索条件的匹配项。 P.S. 只要在url中添加
&hl.preserveMulti=true
就可以使用hl.preserveMulti这个属性了。
夏o漠 2016-07-01
  • 打赏
  • 举报
回复
啊,眼拙,使用了 &hl.preserveMulti=true 命令后,可以高亮多个搜索条件的。多谢楼主了
jbn0903 2016-03-25
  • 打赏
  • 举报
回复
不好意思,还是不懂,在solr中的高亮查询中,貌似没有hl.preserveMulti 这个属性设置吧; 还有,当对该多值字段进行多条件查询时,如 authors:"鲁迅" OR authors:"张爱玲"; 返回的高亮结果集中,为什么只高亮 authors:["<em>鲁迅</em>"] 这个条件? authors:"张爱玲"这个条件呢? ----希望楼主解释哈,谢谢
Marho11 2016-03-03
  • 打赏
  • 举报
回复
刚好遇到这个问题,帮大忙了,谢谢楼主
finemi 2015-12-11
  • 打赏
  • 举报
回复
其实就是如何让高亮结果集中 多值字段返回 所有值 我找到方法了,设置hl.preserveMulti=true 就是了
  • 打赏
  • 举报
回复
引用 3 楼 finemi 的回复:
而我无法确定高亮的是这个多值字段的其中哪一个值,就无法替换
是只是替换那个名称一样的? 还是替换全部? 还有替换什么样?是把map直接当做普通的值么? 通过这个值的名称匹配,能做到么,现在能获取到高亮的map么,能的话遍历高亮map的value, 遍历普通字段集合,如果普通字段集合的值跟高亮map的value相等,然后做替换
finemi 2015-12-10
  • 打赏
  • 举报
回复
引用 1 楼 shijing266 的回复:
你是要获取高亮集合里面map的value 替换 查询结果集的值么
对 对于普通的字段,直接通过字段名对比替换就是了,但是多值字段的结果是一个数据,而高亮的结果集中,这个多值的字段的众多字段值中,只有符合高亮的那一个字段值。 就像我贴的图片中,正常查询出的结果中,authors字段有多个值,而高亮结果集中,只会返回authors中被高亮的其中一个“鲁迅”。 而我无法确定高亮的是这个多值字段的其中哪一个值,就无法替换
君莫傲 2015-12-10
  • 打赏
  • 举报
回复
学习中,
  • 打赏
  • 举报
回复
你是要获取高亮集合里面map的value 替换 查询结果集的值么

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧