apache / apache/lucene

EarlyTerminatingSortingCollector support for grouped searches [LUCENE-7341]

Open
#8,395 2 comments 0 reactions 1 assignee Claimed by @cpoerschke View on GitHub
legacy-jira-priority:Minor type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

Currently grouped searches must not use the early terminating sorting collector because the wrong results would be returned. This ticket proposes to change the `EarlyTerminatingSortingCollector` class and probably the `LeafCollector` interface to support early termination for grouped searches.

**Illustration (aaa is an as yet unnamed boolean flag):**

```Java
# fictitious (sorted by X) segment
| doc key | D0 D1 D2 D3 D4 D5 ... D10 D11 D12 D13 D14 D15 ... D20 D21 D22 D23 D24 D25 ...
| doc grp | G0 G0 G0 G0 G0 G0 ... D10 G10 G10 G10 G10 G10 ... G20 G20 G20 G20 G20 G20 ...
```

```Java
# query with rows=3 sort=X group=false
| query result | D0 D1 D2

# existing code:
# use a EarlyTerminatingSortingCollector with numDocsToCollect=3
# EarlyTerminatingSortingCollector.getLeafCollector returns a LeafCollector
# whose collect method uses (++numCollected >= numDocsToCollect) as the terminating condition
```

```Java
# query with rows=3 sort=X group=true group.field=grp group.sort=X group.limit=1
| query result | G0(D0) G10(D10) G20(D20)

# existing code:
# cannot use EarlyTerminatingSortingCollector (query result would wrongly be just 'G0(D0)')
# proposed new code:
# use a EarlyTerminatingSortingCollector(... numDocsToCollect=3 aaa=true)
```

```Java
# query with rows=3 sort=X group=true group.field=grp group.sort=X group.limit=5
| query result | G0(D0,D1,D2,D3,D4) G10(D10,D11,D12,D13,D14) G20(D20,D21,D22,D23,D24)

# existing code:
# cannot use EarlyTerminatingSortingCollector (query result would wrongly be just 'G0(D0,D1,D2)')
# proposed new code:
# use a EarlyTerminatingSortingCollector(... numDocsToCollect=3 aaa=true)
```

---
Migrated from [LUCENE-7341](https://issues.apache.org/jira/browse/LUCENE-7341) by Christine Poerschke (@cpoerschke), 1 vote, updated Jun 17 2016

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.