solr多字段分组统计数据并结合springboot通过ftl模板导出EXCEL

一、项目结构

 

二、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的限制,删除就表示不限制表格的行数

  1. 将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/AsLightJava/openJava/tree/main/solr

如有不清楚或者遇到问题的,可下面留言联系我。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值