Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 30s
suggest/suggestN rank indexed terms by edit distance to a (misspelled) query term, alphabetical tiebreak. 234/234. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
10 lines
744 B
Plaintext
10 lines
744 B
Plaintext
;; search did-you-mean / spelling suggestion — Haskell source fragment.
|
|
;; Depends on fuzzy (editDist) + index (allTerms). Ranks indexed terms by edit
|
|
;; distance to a (possibly misspelled) query term; ties broken alphabetically.
|
|
;; suggestN :: Int -> String -> Index -> [Term]
|
|
;; suggest :: String -> Index -> Term ("" if the index has no terms)
|
|
|
|
(define
|
|
search/suggest-src
|
|
"sgMk term t = (editDist term t, t)\nsgPairs term idx = map (sgMk term) (allTerms idx)\nsgCmp p1 p2 = if fst p1 < fst p2 then LT else if fst p1 > fst p2 then GT else compare (snd p1) (snd p2)\nsuggestN n term idx = take n (map snd (sortBy sgCmp (sgPairs term idx)))\nsgHead [] = \"\"\nsgHead (x:xs) = x\nsuggest term idx = sgHead (suggestN 1 term idx)\n")
|