问题导读: 1.solr如何实现高亮? 2.solr高亮参数该如何配置? 3.solr使用高亮时需要注意的地方? ![]() 1.描述 我们经常使用搜索引擎,比如在baidu 搜索 spring ,会出现如下结果,结果中与关键字匹配的地方是红色显示与其他内容区别开来。 <ignore_js_op style="word-wrap: break-word;"> ![]() 2.solr对高亮的支持 solr 默认已经配置了highlight 组件。通常我出只需要这样请求,我还是从solr的管理页面截图吧! <ignore_js_op style="word-wrap: break-word;"> ![]() 3.参数说明
4.solr对高亮的支持
5. 使用高亮时需要注意的地方 1.对于multiValued=true的字段不要设计高亮显示 为什么?因为solr对于这个字段里面的多个值只会返回匹配高亮的那个值;如下: <ignore_js_op style="word-wrap: break-word;"> ![]() 从上图中可以看出,remark字段是设计成multiValued=true,而且它里面有多个值,当我们查询“remark=黑色”时,下面的高亮确只返回了当前查询的值;这样如果把这个高亮部分在页面去展示就没有任何意义了! 2.高亮时记得你的schema.xml文件中要配主键(<uniqueKey>id</uniqueKey>) 为什么? 因为solr对高亮的设计是,高亮部分跟结果集部分是分开返回的,如果没有配主键,那么高亮部分返回的结果是这样的,如下图所示,可以看出高亮部分没有带主键,这个时候,你就与上面的结果集匹配不上,那么这样的高亮就没有任何意义,因为不能够确定高亮的是哪条记录。 <ignore_js_op style="word-wrap: break-word;"> ![]() 3.对于如下应用场景的解决方案 例如:solr里面有多个字段例如:title(标题)、context(内容),我想对这两个字段做检索,但是通过利用如下去实现,
,最后通过context_title这个字段做全文检索(玩过solr都知道如上这种配置,context_title字段就必须配置成multiValued=true),这个时候,对这样的字段去高亮就会出现问题 解决方案:直接查询title,context让这两列返回高亮,然后在代码里面让这两列进行拼接,问题解决! 6.下面是我们为solr高亮设计接口模型,及其实现: 因为solr的结果集跟高亮是分开返回的,而且高亮是不会排序的,所以我把我的接口设计成,将高亮部分替换结果集的部分,如下图所示 <ignore_js_op style="word-wrap: break-word;"> ![]() 例如:在地址栏请求 http://192.168.238.133/:8080/search/highlightPageQuery.htm?src={'core':'userManager', 那么返回
出处:http://eksliang.iteye.com/blog/2100461 |
solr4.8 高亮查询和配置(转载)
最新推荐文章于 2022-09-07 17:37:41 发布
