共计 1678 个字符,预计需要花费 5 分钟才能阅读完成。
一、我的项目构造
二、pom.xml
在 pom.xml 文件中增加 springboot、solr、freemarker 相干的依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.0</version>
</dependency>
<!--spring boot 我的项目必须引入的依赖 web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring boot 我的项目引入的 solr 的依赖 -->
<!-- 引入 solr 库连贯 jar-->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
<scope>provided</scope>
</dependency>
</dependencies>
三、制作.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 参数的区别?
如果用 q =content:” 中国 ”, 就会查找所有 content 中蕴含 ” 中国 ” 的,而后 order by score, 这时就会按 content 的类似度来排序。
而如果用 fq,q 设置为:。那么 solr 会先 order by score, 而因为条件是:, 所以所有文档的相关性都是一样的,所以即应用 fq 过滤了,返回排在最后面的却不是相关性最高的。
综上所述,以相关性 (score) 为优先排序条件的,那么条件肯定放在 q 参数中,而 fq 仅仅只是条件的过滤而没有权重相关性为优先排序。
五、封装完数据并渲染到 ftl 模板,导出 EXCEL
大家可能会遇到模板导出的时候报错,提醒 template not found(模板未找到),这时候须要到 application.yml 配置下 freemarker 模板的加载门路,其实还有挺多默认的配置,然而只有这两行相干的配置就能满足广泛须要,如有特地的配置需要可到官网查看
源码地址:https://github.com/AsLightJav…
如有不分明或者遇到问题的,可上面留言分割我。