如何查找结果是否在lucene索引中的2个日期之间下降?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查找结果是否在lucene索引中的2个日期之间下降?相关的知识,希望对你有一定的参考价值。
我试图找出到期日期是否在今天和指定的另一个日期之间。虽然我的数据库有结果,但搜索查询似乎没有获取值。请帮忙!
这是正在运行的查询:jpaQuery:FullTextQueryImpl(+ membershipStatus:full_member + accountManager.firstName:nikki + expiryDate:[20190416 TO 20190516})
此外,数据库的到期日期为YYYY-MM-dd HH:mm:ss格式,不确定如何匹配字段。
这是查询:
Query expiringInQuery = queryBuilder
.range()
.onField("expiryDate")
.ignoreFieldBridge()
.from(DateTools.dateToString(today, DateTools.Resolution.DAY))
.to(DateTools.dateToString(expiringDate, DateTools.Resolution.DAY))
.excludeLimit()
.createQuery();
这是在实体上:
@Field
@Column(name = "expiryDate")
@Temporal(TemporalType.TIMESTAMP)
@JsonIgnore
@IndexedEmbedded
@DateBridge(resolution=org.hibernate.search.annotations.Resolution.DAY, encoding = EncodingType.STRING)
private Date expiryDate;
答案
如果您将它们存储在日期字段中,请查看:https://lucene.apache.org/solr/guide/6_6/working-with-dates.html
因此,正确的语法将是(你可能能够省去时间)
datefield:[2019-04-16T00:00:00.000Z TO 2019-05-16T23:59:59.999Z]
例如,DateRangeField也允许查询
[2014 TO 2014-12-01]
看看链接。
另一答案
这是最终奏效的。
String expiringIn = (inputsMap.get("expiringIn").equals("None")) ? "*" :
(inputsMap.get("expiringIn"));
Date today = DateUtils.truncate(new Date(), Calendar.DATE);
Query luceneQuery = queryBuilder
.range()
.onField("expiryDate")
.from(today)
.to(expiringDate)
.createQuery();
在实体上,
@Field
@Column(name = "expiryDate")
@Temporal(TemporalType.TIMESTAMP)
@JsonIgnore
@IndexedEmbedded
@DateBridge(resolution = org.hibernate.search.annotations.Resolution.MILLISECOND,
encoding = EncodingType.STRING)
private Date expiryDate;
以上是关于如何查找结果是否在lucene索引中的2个日期之间下降?的主要内容,如果未能解决你的问题,请参考以下文章