solrj日期范围内查询详解
发布日期:2021-06-30 13:14:18
浏览次数:2
分类:技术文章
本文共 1782 字,大约阅读时间需要 5 分钟。
开发环境
- solrj 5.4.0
- solr 6.6.0
关于搜索日期范围
网上关于使用solrj进行日期范围的查询,搜得到最多的只有如下的文章
但是这篇文章只写了如下的2行代码, 其他啥也没写.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");String time = "lostTime:["+sdf.format(new Date())+" TO "+sdf.format(new Date())+"]";
看到这两行代码,我是一脸懵逼. 不知道用来干嘛的.
之后琢磨了一下明白了- 字符串time就是用来查询的时间范围条件
- lostTime 对应的是在solrhome中建立的要查询的日期的域fied的字段的名称 如下图所示. 这篇博主对应的字段是lostTime,而我对应的字段是upatetime或者是updatetimedate 一个是string类型,一个是date类型. 经过测试,这两种类型,都能进行时间范围内的查询.
- 接着lostTime后面的,传递的第一个日期为查询的日期的起点
- 第二个日期为查询的日期的终点. 例如第一个日期传递的是三天前,第二个日期传递的是今天.那么查询的时间范围就是从三天前到今天的. 注意第一个日期的值,一定要小于第二个日期的值.
为何使用yyyy-MM-dd’T’HH:mm:ss’Z’进行日期的格式化
在updatetimedate字段,我有设置type=“date”,在solr中进行查询时,显示的值如下图
可以看到,solr对于日期的类型,就是按照这样的格式进行存储的. 因此在solr索引库中,进行日期范围内的查找时,就要按照这样的格式进行格式化.日期范围内查找的实际应用
当时已有如下的solrquerstring进行检索
(((title_2:市)) OR (((DOCS_2:市) OR (CON_ADD_2:市))) OR ((attachment_name:市)))在上面的搜索的基础上,加上日期范围的条件 代码如下, 就是在原有的查询条件的外面,拼接一个and. 加一个括号, 把日期的范围条件加进去
(((title_2:市)) OR (((DOCS_2:市) OR (CON_ADD_2:市))) OR ((attachment_name:市))) AND (updatetimedate:[2019-01-01T15:17:59Z TO 2019-01-03T15:17:59Z])
在java代码中的运用如下. 根据传递进来的条件,查询一天的,一周的,一个月的日期范围.
String timeLimit="";StringBuilder solrQueryString = new StringBuilder("");Calendar calendar = Calendar.getInstance();if ("oneday".equals(timeLimit)) { // 一天内 calendar.add(Calendar.DAY_OF_YEAR, -1);} else if ("oneweek".equals(timeLimit)) { //一周内 calendar.add(Calendar.WEEK_OF_MONTH, -1);} else if ("onemonth".equals(timeLimit)) { // 一月内 calendar.add(Calendar.MONTH, -1);}Date pastDay = calendar.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");String time = "updatetimedate:["+sdf.format(pastDay)+" TO "+sdf.format(new Date())+"]";solrQueryString.append(" AND ").append("(").append(time).append(")");
转载地址:https://javaweixin6.blog.csdn.net/article/details/85715899 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月03日 02时32分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
性能测试需求评审
2019-05-01
性能测试实施流程
2019-05-01
Jmeter在多线程当中对某个http请求进行循环读取配置文件
2019-05-01
Python读取配置文件中文乱码问题
2019-05-01
使用Spark读写外部存储介质(Mysql、Hbase、Redis)
2019-05-01
Spark学习——利用Mleap部署spark pipeline模型
2019-05-01
手写LogisticRegression
2019-05-01
剑指offer编程题,一周刷完
2019-05-01
推荐系统初学
2019-05-01
约瑟夫环问题
2019-05-01
springboot+log4j2体验
2019-05-01
Oracle创建表,修改表(添加列、修改列、删除列、修改表的名称以及修改列名)
2019-05-01
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 报错
2019-05-01
最后一台,i7+6核电脑
2019-05-01
redis五种基本数据类型
2019-05-01
以不同业务,redis分库概念
2019-05-01
使用redis实现订阅功能
2019-05-01
Redis哨兵机制
2019-05-01
哨兵机制服务器环境准备
2019-05-01
SpringBoot整合Redis事务
2019-05-01