转载请出自出处:http://eksliang.iteye.com/blog/2100461
1. ----------------------------------------------描述
我们经常使用搜索引擎,比如在baidu 搜索 spring ,会出现如下结果,结果中与关键字匹配的地方是红色显示与其他内容区别开来。
2.----------------------------------------------solr对高亮的支持
solr 默认已经配置了highlight 组件。通常我出只需要这样请求,我还是从solr的管理页面截图吧!
3.----------------------------------------------参数说明
- hl.fl: 用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用hl.requiredFieldMatch选项。
- hl.requireFieldMatch: 如果置为true,除非用hl.fl指定了该字段,查询结果才会被高亮。它的默认值是false。
- hl.usePhraseHighlighter: 如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。
- hl.highlightMultiTerm :如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。
- hl.fragsize: 返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。
常用的就这几个:参数详细地址http://wiki.apache.org/solr/HighlightingParameters/
4.----------------------------------------------solrj对高亮的支持
public class HighlightTest { public static void main(String[] args) throws SolrServerException { ServiceFacetory facet= ServiceFacetory.getInstance("userManager","http://192.168.238.133:8080//solr"); SolrSupport s= facet.getSolrSupport(); //这里就是得到HttpSolrServer,你也可以自己封装 HttpSolrServer service= s.getHttpSolrServer(); SolrQuery query = new SolrQuery(); query.setQuery("color:黑色"); query.setHighlight(true); //开启高亮 query.setHighlightFragsize(10); //返回的字符个数 query.setHighlightRequireFieldMatch(true); query.setHighlightSimplePost("<aa>"); //前缀 query.setHighlightSimplePre("</aa>"); //后缀 query.setParam("hl.fl", "color"); //高亮字段 QueryResponse req = service.query(query); SolrDocumentList list= req.getResults(); Map<String, Map<String, List<String>>> map=req.getHighlighting(); for (SolrDocument doc : list) { System.out.println(map.get(doc.getFieldValue("id").toString())); } } }
5. ----------------------------------------------使用高亮时需要注意的地方
1.对于multiValued=true的字段不要设计高亮显示
为什么?因为solr对于这个字段里面的多个值只会返回匹配高亮的那个值;如下:
从上图中可以看出,remark字段是设计成multiValued=true,而且它里面有多个值,当我们查询“remark=黑色”时,下面的高亮确只返回了当前查询的值;这样如果把这个高亮部分在页面去展示就没有任何意义了!
2.高亮时记得你的schema.xml文件中要配主键(<uniqueKey>id</uniqueKey>)
为什么?
因为solr对高亮的设计是,高亮部分跟结果集部分是分开返回的,如果没有配主键,那么高亮部分返回的结果是这样的,如下图所示,可以看出高亮部分没有带主键,这个时候,你就与上面的结果集匹配不上,那么这样的高亮就没有任何意义,因为不能够确定高亮的是哪条记录。
3.对于如下应用场景的解决方案
例如:solr里面有多个字段例如:title(标题)、context(内容),我想对这两个字段做检索,但是通过利用如下去实现,
<copyField source=" title " dest="context_title"/> <copyField source=" context" dest="context_title"/>,最后通过context_title这个字段做全文检索(玩过solr都知道如上这种配置,context_title字段就必须配置成multiValued=true),这个时候,对这样的字段去高亮就会出现问题
解决方案:直接查询title,context让这两列返回高亮,然后在代码里面让这两列进行拼接,问题解决!
6.----------------------------------------------下面是我们为solr高亮设计接口模型,及其实现:
因为solr的结果集跟高亮是分开返回的,而且高亮是不会排序的,所以我把我的接口设计成,将高亮部分替换结果集的部分,如下图所示
例如:在地址栏请求
http://192.168.238.133/:8080/search/highlightPageQuery.htm?src={'core':'userManager',
'pageNo':1,'pageSize':10,
'params':['0color:黑色'],
'columns':['id','color','remarks'],
'highlighFields':['color','remark']
}
那么返回
{"data":[ {"id":123,"remarks":"黑色 黄色 蓝色 紫色 ","color":"<em>黑色</em> 黄色 蓝色 紫色 <em>黑色</em> 黄色 蓝色 紫色 "}, {"id":212,"remarks":"黑色 黄色 蓝色 紫色 ","color":"蓝色 绿色 白色 <em>黑色</em> 黄色 蓝色 紫色"}], "pageNo":1, "pageSize":10, "totalRecords":2 }
相关推荐
solr 安装与配置
solr5.4的mmseg4j的相关jar包,还有solr5.4的配置,按我的文档可以配置好solr 的java开发和导库存环境.
与solr4.8匹配的mmseg4j分词器的版本
Solr高亮查询案例-附件资源
图解Solr6.6.0安装与MySQL配置(全量、增量更新)
里面包含了mmseg4j-solr-2.0.0.jar,mmseg4j-solr-2.1.0....mmseg4j-solr-2.1.0.jar 要求 lucene/solr 4.8.x mmseg4j-solr-2.2.0.jar 要求 lucene/solr [4.9, 4.10.x] mmseg4j-solr-2.3.0.jar 要求 lucene/solr [5.0, ]
安装配置solr步骤,包含oracle数据源导入数据配置,以及一些可能遇到的坑
solr4.4.0入门配置步骤 solr4.4手把手入门配置 solr4.4配置 solr4.4.0入门配置步骤 solr4.4手把手入门配置 solr4.4配置
Solr安装与配置 完整的solr配置步骤,带截图,说明很清晰。
docker配置solr登录密码文件,内含配置密码的文件 、web.xml的文件 ,详情可以去看我的博客,博客地址:https://blog.csdn.net/huyande123/article/details/97110784
solr在window下的配置,solr(全文检索系统),solr是lucene的升华版,把数据库的数据导入到solr中,减少了数据库的压力,solr搜索代替并优化了like模糊查询,并且有中文分词器
solr搜索服务器安装配置--资料备份
solr6.0以上版本可以配置的IKAnalyzer分词器
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
solr配置搜索引擎平台 一、 SOLR搭建企业搜索平台 二.... 三,,,,
NULL 博文链接:https://mozhenghua.iteye.com/blog/2275318
在Linux系统上如何搭建了solr搜索服务,同时运用到项目中
详细的tomcat和solr的配置安装过程
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的...