Skip to content

Overrides rewrite in PointRangeQuery to optimize AllDocs/NoDocs cases#14609

Merged
jainankitk merged 5 commits intoapache:mainfrom
tectonix:PointRangeQuery-rewrite
May 10, 2025
Merged

Overrides rewrite in PointRangeQuery to optimize AllDocs/NoDocs cases#14609
jainankitk merged 5 commits intoapache:mainfrom
tectonix:PointRangeQuery-rewrite

Conversation

@ebradshaw
Copy link
Contributor

Overrides rewrite in PointRangeQuery range to handle cases where the query either fully contains or fully excludes all documents within the shard.

Often, particularly when using time based partitioning, range queries may overlap several indexes. Many of these indexes have timestamp values that are fully contained by the query, in which case the query can be rewritten to a MatchAllDocsQuery or a FieldExistsQuery. On the other hand, many indexes can be fully excluded if they're outside the requested time range, in which case the query can be rewritten to a MatchNoDocsQuery.

While a similar optimization exists at the leaf level in the createWeight function, rewriting at the shard level enables other optimizations downstream.

Please let me know if this has been ruled out in the past for other reasons or if the implementation misses anything. Thanks.

…range either fully contains or fully excludes all documents within the shard.
Copy link
Contributor

@jpountz jpountz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some minor comments but the change looks good to me in general. Thank you!

- Fixes annotation ordering
- Pulls relate method out of inner class and refactors rewrite to use it
@ebradshaw
Copy link
Contributor Author

I think we're good now. Let me know if you guys see anything else, and thanks for the quick review!

Copy link
Contributor

@jpountz jpountz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, can you add a CHANGES entry?

@jainankitk jainankitk merged commit 416dd2f into apache:main May 10, 2025
7 checks passed
@jainankitk
Copy link
Contributor

Thanks @ebradshaw for this change, and congratulations on your first contribution in lucene! :)

@jainankitk jainankitk added this to the 10.3.0 milestone May 10, 2025
jainankitk added a commit to jainankitk/lucene that referenced this pull request May 10, 2025
weizijun added a commit to weizijun/lucene that referenced this pull request May 16, 2025
* main: (31 commits)
  Fix termination condition in TestStressNRTReplication. (apache#14665)
  deps(java): bump com.gradle.develocity from 3.19 to 3.19.2 (apache#14662)
  Build: remove hard-coded Java versions from ecj.javadocs.prefs (apache#14651)
  Update verifier comment to show label (apache#14658)
  Catch and re-throw Throwable rather than using a success boolean (apache#14633)
  Mention label in changelog verifier comment (apache#14656)
  Enable PR actions in changelog verifier (apache#14644)
  Fix FuzzySet#getEstimatedNumberUniqueValuesAllowingForCollisions to properly account for hashCount (apache#14614)
  Don't perform additional KNN querying after timeout, fixes apache#14639 (apache#14640)
  Add instructions to help/IDEs.txt for VSCode and Neovim (apache#14646)
  build(deps): bump ruff from 0.11.7 to 0.11.8 in /dev-tools/scripts (apache#14603)
  deps(java): bump de.jflex:jflex from 1.8.2 to 1.9.1 (apache#14583)
  Use the preload hint on completion fields and memory terms dictionaries. (apache#14634)
  Clean up FileTypeHint a bit. (apache#14635)
  Expressions: Improve test to use a fully private class or method
  Remove deprecations in expressions (apache#14641)
  removing constructor with deprecated attribute 'onlyLongestMatch (apache#14356)
  Moving CHANGES entry for apache#14609 from 11.0 to 10.3 (apache#14638)
  Overrides rewrite in PointRangeQuery to optimize AllDocs/NoDocs cases (apache#14609)
  Adding benchmark for histogram collector over point range query (apache#14622)
  ...

# Conflicts:
#	lucene/CHANGES.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants