You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Alan Woodward (Jira)" <ji...@apache.org> on 2022/01/17 11:48:00 UTC
[jira] [Resolved] (LUCENE-10377) Replace 'sortPos' parameter in SortField.getComparator()
[ https://issues.apache.org/jira/browse/LUCENE-10377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alan Woodward resolved LUCENE-10377.
------------------------------------
Fix Version/s: 9.1
10.0 (main)
Resolution: Fixed
> Replace 'sortPos' parameter in SortField.getComparator()
> --------------------------------------------------------
>
> Key: LUCENE-10377
> URL: https://issues.apache.org/jira/browse/LUCENE-10377
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Alan Woodward
> Assignee: Alan Woodward
> Priority: Major
> Fix For: 9.1, 10.0 (main)
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> SortField.getComparator() takes two parameters: the number of hits we are collecting, so that the comparator can size its internal priority queue; and the position of this sortfield in the overall sort. This second parameter is only actually used to determine whether or not the SortField should enable various skipping operations, building comparative iterators etc. However, it's not clear from the API that this is why it is passed, and as a consequence all sorts of consumers of this API faithfully pass through their sort positions even when they aren't actually using skipping at all. In particular, CheckIndex does this when checking index sorts, and this in fact leads to a bug, where it will attempt to build skipping structures over fields from 8x-created indexes that did not have the same type constraints that 9x indexes do and incorrectly throw an error.
> I think we should replace this second parameter with a simple boolean, `enableSkipping`, that the TopHits collectors can pass as `true` for the first sortfield. Other APIs that use sorts but not skipping, like CheckIndex or the grouping collectors, can always pass `false` so we don't waste time building skipping structures that never get used.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org