[英]How to rounds down date filter query using spring data solr?
How can I rounds down date filter query using spring data solr? 如何使用Spring Data Solr舍入日期过滤器查询?
I want to write query fq=startDate:[2013-06-14T23:59:59.999Z/DAY TO 2013-06-14T23:59:59.999Z/DAY]
using FilterQuery
. 我想写查询
fq=startDate:[2013-06-14T23:59:59.999Z/DAY TO 2013-06-14T23:59:59.999Z/DAY]
使用FilterQuery
。
How can I rounds down following query using FilterQuery
? 如何使用
FilterQuery
以下查询?
FilterQuery filterQuery = new SimpleFilterQuery();
filterQuery.addCriteria(new Criteria(EventDocument.FIELD_START_DATE).between(sc.getStartDate(), sc.getStartDate()));
Any Hint will be much appreciated. 任何提示将不胜感激。
The easiest would probably be to use SimpleStringCriteria
最简单的方法可能是使用
SimpleStringCriteria
String start = JavaDateConverter.INSTANCE.convert(sc.getStartDate())+"/DAY";
String end = JavaDateConverter.INSTANCE.convert(sc.getEndDate())+"/DAY";
Criteria criteria = new SimpleStringCriteria("[" + start + " TO " + end + "]");
A bit more complex is registering a custom converter 注册自定义转换器要复杂一点
@Configuration
@EnableSolrRepositories
public class SolrContext {
//..skipped solr server initialization to shorten
@Bean
public SolrTemplate solrTemplate() throws Exception {
SolrTemplate solrTemplate = new SolrTemplate(solrServerFactory());
solrTemplate.setSolrCore("collection1");
solrTemplate.registerQueryParser(SimpleQuery.class, queryParser());
return solrTemplate;
}
@Bean
public QueryParser queryParser() {
DefaultQueryParser queryParser = new DefaultQueryParser();
//register custom converter for Date
queryParser.registerConverter(RoundDayConverter.INSTANCE);
return queryParser;
}
private enum RoundDayConverter implements Converter<Date, String> {
INSTANCE;
private static final DateTimeFormatter FORMATTER = ISODateTimeFormat.dateTime().withZoneUTC();
@Override
public String convert(Date source) {
if (source == null) {
return "";
}
return ClientUtils.escapeQueryChars(FORMATTER.print(source.getTime())) + "/DAY";
}
}
}
As the above would apply to every Date
it might be a good idea to create a custom type and register a converter for that. 由于上述内容适用于每个
Date
因此创建一个自定义类型并为此注册一个转换器可能是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.