apache / apache/lucene

Adding 3-ary PriorityQueue to speed up TopFieldCollector

Open
#16,076 0 comments 0 reactions 0 assignees View on GitHub
type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

### Description

In #15140, we introduced TernaryLongHeap to optimize performance for collectors such as TopDoc*Collectors. Nevertheless, TopFieldLeafCollector still adopts a 2-ary PriorityQueue, which causes identical performance bottlenecks even with a topN value of 1000.

Would it be feasible to implement a ternary-heap based PriorityQueue as well?

Contributor guide

Open the contributing guide

Research direction

Start by comparing the existing TernaryLongHeap from #15140 with TopFieldLeafCollector and its current 2-ary PriorityQueue usage. Investigate the reported topN=1000 bottleneck and benchmark the ternary implementation against the existing queue; done means a validated PriorityQueue approach with improved collector performance.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.