package sherlodoc

  1. Overview
  2. Docs
Search engine for OCaml documentation

Install

Dune Dependency

Authors

Maintainers

Sources

odoc-3.1.0.tbz
sha256=355b3cfff4934903cbaed8b51ce35e333e8609932d230294200a9f2d42ffa914
sha512=f78318d0a16164a9cd16ee02f611c2e00d32b772fe38e992d6db6ec94b1c00cd9c377fbfe64031b8f245e57b2f3aac9364108327e7f1693533ddcff94c476e05

doc/src/sherlodoc.query/dynamic_cost.ml.html

Source file dynamic_cost.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module Entry = Db.Entry

type query =
  { name : string list
  ; type_paths : Type_distance.t option
  }

let of_query { Query_parser.name; typ } =
  let type_paths =
    match typ with
    | `typ t -> Some (Type_distance.paths_of_type t)
    | _ -> None
  in
  { name; type_paths }

let type_distance query_type entry =
  match query_type, Entry.Kind.get_type entry.Entry.kind with
  | Some query_paths, Some entry_type ->
      Some (Type_distance.v ~query_paths ~entry:entry_type)
  | Some _, None -> Some 1000
  | _ -> None

let score query entry =
  let name_matches = Name_cost.best_matches query.name entry.Db.Entry.name in
  let type_cost =
    match type_distance query.type_paths entry with
    | Some cost -> cost
    | None -> 0
  in
  5 * (name_matches + type_cost)
OCaml

Innovation. Community. Security.