# elboob A site search engine for Cryogen with search on the client side ## Design intention This project is intended to be in two parts: ### The compiler A Clojure function which scans a list of directories of Markdown files, and produces a map which keys each lexical token occurring in each file (with Markdown formatting, common words, punctuation etc excepted) to a map which keys the relative file path of each file in which the token occurs to the frequency the token occurs within the file. Thus, supposing we had one file, with the path name `content/md/posts/aquarius.md` with the content > # The Age of Aquarius > > This is the dawning of the Age of Aquarius. Then the output should be ``` clojure {"age" {"content/md/posts/aquarius.md" 2} "aquarius" {"content/md/posts/aquarius.md" 2} "dawning" {"content/md/posts/aquarius.md" 1}} ``` This map is then stored in a file `elboob.edn` in the root directory of the Cryogen public output. Whether the source path name (e.g. `content/md/posts/`) should be converted to the target pathname (e.g. `/blog/posts-output/`) at compile time or at search time is something I'll decide later. ### The searcher The searcher is a little Clojurescript function which, given a sequence of search terms, will read the `elboob.edn` file, will produce a web page showing a list of files which contain one or more of those search terms, ordered by the product of the number of occurences of each word in the file. ## Implementation Has not started yet. ## License Copyright © 2025 Simon Brooke. Licensed under the GNU General Public License, version 2.0 or (at your option) any later version.