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

41次阅读

共计 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…

如有不分明或者遇到问题的,可上面留言分割我。

正文完
 0