You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Adrien Grand <jp...@gmail.com> on 2019/04/02 10:25:06 UTC

Re: How to control missing value when sorting using *ValuesSource?

+1

On Sun, Mar 31, 2019 at 11:38 PM Michael Sokolov <ms...@gmail.com> wrote:
>
> I just want to surface this again in case it got missed; it's a small gap,
> but it seems buggy that we can support setMissingValue for SortFields based
> on concrete numeric fields, but not for abstract values sources that are
> numeric and have the same "missing value" semantics - ie when the source
> does not advance to a doc, it has no value for that doc.
>
> I think the gap can be addressed by adding fairly trivial overrides for
> LongValuesSource.LongValuesSortField.setMissingValue and
> DoubleValuesSource.DoubleValuesSortField.setMissingValue, adding the
> missing value to the corresponding ComparatorSource classes, and ensuring
> it doesn't get dropped in SortField.rewrite(). I'm happy to provide a patch
> if it would be welcome.
>
>
> On Wed, Mar 27, 2019 at 12:26 PM Michael Sokolov <ms...@gmail.com> wrote:
>
> > The ValuesSources provide a getSortField method that always supplies 0 as
> > the "missing value" - ie the default value for documents that do not
> > advance the source.
> >
> > But if an application wants to provide "missing last" or "missing first"
> > semantics, it needs to control the missing value depending on the possible
> > range of values and whether the sort is ascending or descending.
> >
> > Yet if you call setMissingValue() on one of these SortFields, you get an
> > Exception:
> >                     throw new IllegalArgumentException("Missing value only
> > works for numeric or STRING types");
> >
> > But these *are* numeric types, or they seem that way. Internally they are
> > labeled as type CUSTOM.
> >
> > First, my question is whether there is a way to achieve the desired
> > behavior -- missing last semantics combined with sorting on ValuesSource?
> >
> > And if there isn't a good way, would it make sense to default to "missing
> > last", providing a default value of MIN or MAX depending on whether the
> > sort is descending or ascending, or maybe just allow setMissingValue to be
> > called for these fields?
> >



-- 
Adrien

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org