apache / apache/lucene

Adding Date Math support to Lucene Expressions module [LUCENE-6302]

Open
#7,363 7 comments 0 reactions 0 assignees View on GitHub
affects-version:4.10.3 legacy-jira-priority:Major module:expressions type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

Lucene Expressions are great, but they don't allow for date math. More specifically, they don't allow to infer date parts from a numeric representation of a date stamp, nor they allow to parse strings representations to dates.

Some of the features requested here easy to implement via ValueSource implementation (and potentially minor changes to the lexer definition) , some are more involved. I'll be happy if we could get half of those in, and will be happy to work on a PR for the parts we can agree on.

The items we will be happy to have:

- A now() function (with or without TZ support) to return a current long date/time value as numeric, that we could use against indexed datetime fields (which are infact numerics)
- Parsing methods - to allow to express datetime as strings, and / or read it from stored fields and parse it from there. Parse errors would render a value of zero.
- Given a numeric value, allow to specify it is a date value and then infer date parts - e.g. Date(1424963520).Year == 2015, or Date(now()) - Date(1424963520).Year. Basically methods which return numerics but internally create and use Date objects.

---
Migrated from [LUCENE-6302](https://issues.apache.org/jira/browse/LUCENE-6302) by Itamar Syn-Hershko

Contributor guide

Open the contributing guide

Research direction

No files, tests, or specific entry points are named. Start by locating the Lucene Expressions module and reviewing its lexer definition and ValueSource implementations; narrow the requested date-math scope, then define tests for the agreed functions and parsing behavior. Done means the agreed subset is implemented and covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, search
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.