关于java: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的限度,删除就示意不限度表格的行数

将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…

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理