solr多字段分组统计数据并结合springboot通过ftl模板导出EXCEL
一、项目结构
二、pom.xml
在pom.xml文件中添加springboot、solr、freemarker相关的依赖包
org.springframework.boot
spring-boot-starter-freemarker
cn.hutool
hutool-all
5.2.0
org.springframework.boot
spring-boot-starter-web
org.apache.solr
solr-solrj
org.springframework.boot
spring-boot-starter-data-solr
org.projectlombok
lombok
1.16.14
provided
三、制作.ftl模板
1、创建excel模板,并填充一些假数据,方便后续定位
2、另存为xml格式
3、修改后缀为ftl
4、处理ftl文件
记得将ss:ExpandedRowCount="5"删掉,因为后面循环遍历的时候肯定会超过行数为5的限制,删除就表示不限制表格的行数
将stat.ftl放入resources/templates
四、在springboot上使用solr进行多字段分组统计数据
这里需要注意因为查看HttpSolrClient源码发现DEFAULT_PATH默认是"/select",并且没找到可以修改path的地方,所以如果solr服务有自定义/select的情况下,就可以拷贝源码,然后在本地新建一个同名的HttpSolrClient,可以参考我的项目结构
拓展知识:solr中q与fq参数的区别?五、封装完数据并渲染到ftl模板,导出EXCEL
如果用q=content:"中国",就会查找所有content中包含"中国"的,然后order by score,这时就会按content的相似度来排序。
而如果用fq,q设置为:。那么solr会先order by score,而因为条件是:,所以所有文档的相关性都是一样的,所以即使用fq过滤了,返回排在最前面的却不是相关性最高的。
综上所述,以相关性(score)为优先排序条件的,那么条件一定放在q参数中,而fq仅仅只是条件的过滤而没有权重相关性为优先排序。
大家可能会遇到模板导出的时候报错,提示template not found(模板未找到),这时候需要到application.yml配置下freemarker模板的加载路径,其实还有挺多默认的配置,但是只要这两行相关的配置就能满足普遍需要,如有特别的配置需求可到官网查看
源码地址:https://github.com/AsLightJav...
【solr多字段分组统计数据并结合springboot通过ftl模板导出EXCEL】如有不清楚或者遇到问题的,可下面留言联系我。
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 爱就是希望你好好活着
- 昨夜小楼听风
- 知识
- 死结。
- 我从来不做坏事
- 烦恼和幸福
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- Linux下面如何查看tomcat已经使用多少线程
- 说得清,说不清