Как узнать, падает ли результат между 2 датами в индексе люцены? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь найти, если срок действия истекает между сегодняшним днем ​​и другой указанной датой.Хотя в моей базе данных есть результаты, поисковый запрос, похоже, не получает значение.Пожалуйста, помогите!

Этот запрос выполняется: jpaQuery: FullTextQueryImpl (+ membersStatus: full_member + accountManager.firstName: nikki + expiryDate: [20190416 TO 20190516})

Кроме того, база данных имеетдата окончания срока действия в формате ГГГГ-ММ-дд ЧЧ: мм: сс, не знаю, как сопоставить поля.

Это запрос:

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;

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Это то, что, наконец, сработало.

 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;
0 голосов
/ 16 апреля 2019

Если вы сохранили их в поле даты, посмотрите здесь: 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]

проверить ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...