Out-of-order currently adds complexity that I would like to remove. Here is a selection of issues that come from out-of-order scoring.
- lots of specializations with collectors: we have two versions of every top score/field collector depending on whether it should support out-of-order collection or not
- it feels like it should be an implementation detail of our bulk scorers but it also makes our APIs more complicated, eg. LeafCollector.acceptsDocsOutOfOrder
- if you create a TopFieldCollector, how do you know if you should pass docsScoredInOrder=true or false? To make the decision, you actually need to know whether your query supports out-of-order scoring while the API is on Weight.
I initially wanted to keep it and improve the decision process in
LUCENE-6172 but I'm not sure it's the right approach as it would require to make the API even more complicated... hence the suggestion to remove out-of-order scoring completely.