Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
paginate windows a ranked list (take lim . drop off); pageTfIdf/pageBm25 and resultCount. 148/148. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
;; Extension — result pagination (offset / limit) over ranked results.
|
|
;; Corpus (tf of "x" descending): 1 x4 2 x3 3 x2 4 x1 5 y(no x)
|
|
;; rankTfIdf ["x"] -> [1,2,3,4]
|
|
|
|
(define
|
|
page-setup
|
|
"idx = indexDoc 5 \"y\" (indexDoc 4 \"x\" (indexDoc 3 \"x x\" (indexDoc 2 \"x x x\" (indexDoc 1 \"x x x x other\" emptyIndex))))\n")
|
|
|
|
(define
|
|
page-cases
|
|
(list
|
|
(list "first page" "pageTfIdf 0 2 [\"x\"] idx" (list 1 2))
|
|
(list
|
|
"second page"
|
|
"pageTfIdf 2 2 [\"x\"] idx"
|
|
(list 3 4))
|
|
(list
|
|
"sliding window"
|
|
"pageTfIdf 1 2 [\"x\"] idx"
|
|
(list 2 3))
|
|
(list
|
|
"limit exceeds remaining"
|
|
"pageTfIdf 3 10 [\"x\"] idx"
|
|
(list 4))
|
|
(list "offset past end" "pageTfIdf 4 2 [\"x\"] idx" (list))
|
|
(list "limit zero" "pageTfIdf 0 0 [\"x\"] idx" (list))
|
|
(list
|
|
"whole result"
|
|
"pageTfIdf 0 10 [\"x\"] idx"
|
|
(list 1 2 3 4))
|
|
(list
|
|
"paginate raw list"
|
|
"paginate 1 2 [10, 20, 30, 40]"
|
|
(list 20 30))
|
|
(list "paginate raw past end" "paginate 9 2 [10, 20]" (list))
|
|
(list
|
|
"bm25 page window size"
|
|
"[length (pageBm25 0 2 1.5 0.75 [\"x\"] idx)]"
|
|
(list 2))
|
|
(list "result count" "[resultCount [\"x\"] idx]" (list 4))
|
|
(list "result count zero" "[resultCount [\"zzz\"] idx]" (list 0))))
|
|
|
|
(define
|
|
page-results
|
|
(search-batch page-setup (map (fn (c) (nth c 1)) page-cases)))
|
|
|
|
(map-indexed
|
|
(fn
|
|
(i c)
|
|
(hk-test (nth c 0) (nth page-results i) (nth c 2)))
|
|
page-cases)
|
|
|
|
{:fail hk-test-fail :pass hk-test-pass :fails hk-test-fails}
|