数据库是oracle,create_time是字符类型,无法进行时间比较。
解决办法:第一步,数据库导入到solr时,应该转化为时间类型。
第二步,定义field的CREATE_DATE为pdate
这样配置就完成了。
剩下是正常的代码。
//时间查询
StringBuilder dateQ = new StringBuilder("");
if(StringUtils.isNotEmpty(startTime)||StringUtils.isNotEmpty(endTime)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateQ.append(" AND ").append("(").append("CREATE_DATE:[");
if (StringUtils.isNotEmpty(startTime)) {
Date pastDay = DateTimeUtil.format(startTime, "yyyy-MM-dd");
dateQ.append(sdf.format(pastDay));
} else {
Date pastDay = DateTimeUtil.format("2000-01-01", "yyyy-MM-dd");
dateQ.append(sdf.format(pastDay));
}
dateQ.append(" TO ");
if (StringUtils.isNotEmpty(endTime)) {
Date pastDay = DateTimeUtil.format(endTime, "yyyy-MM-dd");
dateQ.append(sdf.format(pastDay));
} else {
dateQ.append(sdf.format(new Date()));
}
dateQ.append("])");
}
//查询条件, 这里的 q 对应 下面图片标红的地方
params.set("q", q+dateQ.toString());