You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@solr.apache.org by Steven White <sw...@gmail.com> on 2021/07/21 14:36:05 UTC
Result set order when searching on "*" (asterisk character)
Hi everyone,
When I search on "*" (asterisk character) what's the result sort order
based on?
Thanks
Steven
Re: Result set order when searching on "*" (asterisk character)
Posted by Alessandro Benedetti <a....@sease.io>.
Hi,
to add to what Michael specified:
*"is determined by the order of docs asserialized in the Lucene index --
and that order is arbitrary, and can varyacross different replicas of the
same "shard" of the index."*
Until segment merge happens in the background, the internal Lucene ID for a
document aligns with the order of indexing.
So you may be tricked to rely on this property i.e. the final tie-breaker
is the time of indexing.
But updates, deletions, background merges(and potentially other internal
mechanisms that I missed) happen all the time, so you should always be
responsible for solving your score ties and never rely on the internal
Lucene ID for a document to do that.
Cheers
--------------------------
Alessandro Benedetti
Apache Lucene/Solr Committer
Director, R&D Software Engineer, Search Consultant
www.sease.io
On Thu, 22 Jul 2021 at 17:35, Michael Gibney <mi...@michaelgibney.net>
wrote:
> No sort option configured generally defaults to score (and currently does
> so even in cases such as the "*:*" case (MatchAllDocsQuery) where sort is
> guaranteed to be irrelevant; see:
> https://issues.apache.org/jira/browse/SOLR-14765).
>
> But functionally speaking that doesn't really matter: in the event of a
> main-sort "tie" (and in this case what you have is essentially "one big
> tie") or no sort at all, the order is determined by the order of docs as
> serialized in the Lucene index -- and that order is arbitrary, and can vary
> across different replicas of the same "shard" of the index.
>
> If stability is desired (and in many cases it is), you could try adding a
> default `sort` param of, e.g.: `sort=score,id` (with `id` as a unique,
> explicit tie-breaker). There are other options for handling this situation
> and nuances that you may want to account for somehow; but they all stem
> from the direct answer to your question, which is that in the event of tie
> or no sort, the order of returned results is arbitrary and unstable.
>
> On Thu, Jul 22, 2021 at 11:11 AM Steven White <sw...@gmail.com>
> wrote:
>
> > I don't have any sort option configured. The score I'm getting back is
> 1.0
> > for each hit item.
> >
> > Does anyone know about Lucene's internal functionality to help me
> > understand what the returned order is?
> >
> > Steven
> >
> > On Wed, Jul 21, 2021 at 10:52 AM Vincenzo D'Amore <v....@gmail.com>
> > wrote:
> >
> > > if no sort options are configure, just try to add the score field
> you'll
> > > see all the documents (are ordered by score), which usually when there
> > are
> > > no clause is 1.
> > >
> > > On Wed, Jul 21, 2021 at 4:36 PM Steven White <sw...@gmail.com>
> > wrote:
> > >
> > > > Hi everyone,
> > > >
> > > > When I search on "*" (asterisk character) what's the result sort
> order
> > > > based on?
> > > >
> > > > Thanks
> > > >
> > > > Steven
> > > >
> > >
> > >
> > > --
> > > Vincenzo D'Amore
> > >
> >
>
Re: Result set order when searching on "*" (asterisk character)
Posted by Michael Gibney <mi...@michaelgibney.net>.
No sort option configured generally defaults to score (and currently does
so even in cases such as the "*:*" case (MatchAllDocsQuery) where sort is
guaranteed to be irrelevant; see:
https://issues.apache.org/jira/browse/SOLR-14765).
But functionally speaking that doesn't really matter: in the event of a
main-sort "tie" (and in this case what you have is essentially "one big
tie") or no sort at all, the order is determined by the order of docs as
serialized in the Lucene index -- and that order is arbitrary, and can vary
across different replicas of the same "shard" of the index.
If stability is desired (and in many cases it is), you could try adding a
default `sort` param of, e.g.: `sort=score,id` (with `id` as a unique,
explicit tie-breaker). There are other options for handling this situation
and nuances that you may want to account for somehow; but they all stem
from the direct answer to your question, which is that in the event of tie
or no sort, the order of returned results is arbitrary and unstable.
On Thu, Jul 22, 2021 at 11:11 AM Steven White <sw...@gmail.com> wrote:
> I don't have any sort option configured. The score I'm getting back is 1.0
> for each hit item.
>
> Does anyone know about Lucene's internal functionality to help me
> understand what the returned order is?
>
> Steven
>
> On Wed, Jul 21, 2021 at 10:52 AM Vincenzo D'Amore <v....@gmail.com>
> wrote:
>
> > if no sort options are configure, just try to add the score field you'll
> > see all the documents (are ordered by score), which usually when there
> are
> > no clause is 1.
> >
> > On Wed, Jul 21, 2021 at 4:36 PM Steven White <sw...@gmail.com>
> wrote:
> >
> > > Hi everyone,
> > >
> > > When I search on "*" (asterisk character) what's the result sort order
> > > based on?
> > >
> > > Thanks
> > >
> > > Steven
> > >
> >
> >
> > --
> > Vincenzo D'Amore
> >
>
Re: Result set order when searching on "*" (asterisk character)
Posted by Steven White <sw...@gmail.com>.
I don't have any sort option configured. The score I'm getting back is 1.0
for each hit item.
Does anyone know about Lucene's internal functionality to help me
understand what the returned order is?
Steven
On Wed, Jul 21, 2021 at 10:52 AM Vincenzo D'Amore <v....@gmail.com>
wrote:
> if no sort options are configure, just try to add the score field you'll
> see all the documents (are ordered by score), which usually when there are
> no clause is 1.
>
> On Wed, Jul 21, 2021 at 4:36 PM Steven White <sw...@gmail.com> wrote:
>
> > Hi everyone,
> >
> > When I search on "*" (asterisk character) what's the result sort order
> > based on?
> >
> > Thanks
> >
> > Steven
> >
>
>
> --
> Vincenzo D'Amore
>
Re: Result set order when searching on "*" (asterisk character)
Posted by Vincenzo D'Amore <v....@gmail.com>.
if no sort options are configure, just try to add the score field you'll
see all the documents (are ordered by score), which usually when there are
no clause is 1.
On Wed, Jul 21, 2021 at 4:36 PM Steven White <sw...@gmail.com> wrote:
> Hi everyone,
>
> When I search on "*" (asterisk character) what's the result sort order
> based on?
>
> Thanks
>
> Steven
>
--
Vincenzo D'Amore