I have an index with a numeric field time_QUEUED.
> ft.search /h/t/idx * sortby time_QUEUED return 1 time_QUEUED
1) (integer) 5
2) "/h/t/d/922daf3d04ab41a0b72e93ac469cf3c1"
3) 1) "time_QUEUED"
2) "1583500901.55"
4) "/h/t/d/eeba50824e3348ffa9375f1a31069bf0"
5) 1) "time_QUEUED"
2) "1583501038.48"
6) "/h/t/d/5faebed524d149c58fd9bb4f76d811ac"
7) 1) "time_QUEUED"
2) "1583501038.47"
8) "/h/t/d/343e2d271937436d9c1fb110833d30bc"
9) 1) "time_QUEUED"
2) "1583501038.62"
10) "/h/t/d/db3b0302a9b14b1aac43f74b9bb7c256"
11) 1) "time_QUEUED"
2) "1583501038.63"
Now I expect this to return the last record:
> ft.search /h/t/idx "@time_QUEUED:[1583501038.63 +inf]"
1) (integer) 0
And this to return 2 last records:
> ft.search /h/t/idx "@time_QUEUED:[1583501038.62 +inf]"
1) (integer) 0
I only start getting results when the floor of the condition is the largest integer not greater than the results:
> ft.search /h/t/idx "@time_QUEUED:[1583501038.0 +inf]" return 1 time_QUEUED
1) (integer) 4
2) "/h/t/d/db3b0302a9b14b1aac43f74b9bb7c256"
3) 1) "time_QUEUED"
2) "1583501038.63"
4) "/h/t/d/eeba50824e3348ffa9375f1a31069bf0"
5) 1) "time_QUEUED"
2) "1583501038.48"
6) "/h/t/d/343e2d271937436d9c1fb110833d30bc"
7) 1) "time_QUEUED"
2) "1583501038.62"
8) "/h/t/d/5faebed524d149c58fd9bb4f76d811ac"
9) 1) "time_QUEUED"
2) "1583501038.47"
Float condition works, too, as long as it's less than the floored results:
ft.search /h/t/idx “@time_QUEUED:[1583501037.99 +inf]” return 1 time_QUEUED
 (integer) 4
 “/h/t/d/db3b0302a9b14b1aac43f74b9bb7c256”

 “time_QUEUED”
 “1583501038.63”
 “/h/t/d/eeba50824e3348ffa9375f1a31069bf0”

 “time_QUEUED”
 “1583501038.48”
 “/h/t/d/343e2d271937436d9c1fb110833d30bc”

 “time_QUEUED”
 “1583501038.62”
 “/h/t/d/5faebed524d149c58fd9bb4f76d811ac”

 “time_QUEUED”
 “1583501038.47”
Am I using a wrong syntax? Does it work like this by design? Is there a workaround to do an exact search?
Thanks