[
https://issues.apache.org/jira/browse/SOLR-10231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15923312#comment-15923312
]
Hoss Man commented on SOLR-10231:
-
bq. Btw, would the same issue exist in 6.x?
yeah, there's nothing version specific happening here -- it's just the nature
of the way cursors work. Sorting by a NOW relative function like this, where
the result for each doc changes every time you send a request, is just like
sorting on a field that you constantly update for every doc in between every
request.
bq. (Perhaps the NOW value should also be encoded into the cursor values so
this happens automatically under the covers? ... not sure if that's a good idea
in general, would need to think about it more)
The more i think about it, the more convinced i am this wouldn't be a good idea
-- because it would complicate usescases where people want filter queries that
involve "NOW" that they *do* want/expect to change in subsequent requests as
they walk cursor -- ie: an {{fq=expiresAt:\[\NOW TO *\]}} that should use a NOW
that represents the actual moment the request is made, even if they've been
tailing a cursor (with a sort that might not even involve {{expiresAt}})
continuously
I've added a note about sorts (implicitly) involving NOW to the docs on
cursors...
https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=38572235=28=29
> Cursor value always different for last page with sorting by a date based
> function using NOW
> ---
>
> Key: SOLR-10231
> URL: https://issues.apache.org/jira/browse/SOLR-10231
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: SearchComponents - other
>Affects Versions: 4.10.2
>Reporter: Dmitry Kan
>
> Cursor based results fetching is a deal breaker for search performance.
> It works extremely well when paging using sort by field(s).
> Example, that works (Id is unique field in the schema):
> Query:
> {code}
> http://solr-host:8983/solr/documents/select?q=*:*=DocumentId:76581059=AoIGAC5TU1ItNzY1ODEwNTktMQ===DocumentId=UserId+asc%2CId+desc=1
> {code}
> Response:
> {code}
>
>
> 0
> 4
>
> *:*
> DocumentId
> AoIGAC5TU1ItNzY1ODEwNTktMQ==
> DocumentId:76581059
> UserId asc,Id desc
> 1
>
>
>
> AoIGAC5TU1ItNzY1ODEwNTktMQ==
>
> {code}
> nextCursorMark equals to cursorMark and so we know this is last page.
> However, sorting by function behaves differently:
> Query:
> {code}
> http://solr-host:8983/solr/documents/select?rows=1=*:*=DocumentId:76581059=AoIFQf9yCCAuU1NSLTc2NTgxMDU5LTE==DocumentId=min(ms(NOW,DynamicDateField_1),ms(NOW,DynamicDateField_12),ms(NOW,DynamicDateField_3),ms(NOW,DynamicDateField_5))%20asc,Id%20desc
> {code}
> Response:
> {code}
>
>
> 0
> 6
>
> *:*
> DocumentId
> AoIFQf9yCCAuU1NSLTc2NTgxMDU5LTE=
> DocumentId:76581059
>
> min(ms(NOW,DynamicDateField_1),ms(NOW,DynamicDateField_12),ms(NOW,DynamicDateField_3),ms(NOW,DynamicDateField_5))
> asc,Id desc
>
> 1
>
>
>
>
> 76581059
>
>
> AoIFQf9yFyAuU1NSLTc2NTgxMDU5LTE=
>
> {code}
> nextCursorMark does not equal to cursorMark, which suggests there are more
> results. Which is not true (numFound=1). And so the client goes into infinite
> loop.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org