A simple in-memory full-text-search engine for Clojure
Clojure
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
src/caponia
.gitignore
LICENSE
README.md
project.clj

README.md

A simple in-memory full-text-search engine for Clojure, named after a spider.

Getting started:

;; init
(use ['caponia 'index 'query])
(def fti (make-index))

;; load it up
(index-text fti "document-1" "a blob of text")

;; you can provide multiple [field weight] pairs. weights are just
;; used as a multiplier for occurrences, for instance to rank title
;; matches higher than body matches.
(index-text fti "document-1" [[document-title 2] [document-body 1]])

;; query it
(do-search fti "blob") ; "and" query by default
(do-search fti "a search phrase" :or)

;; save to/load from disk
(save-index fti "directory/filename.index")
;; ...make some changes...
(save-index fti) ; it remembers the filename

(load-index fti "directory/filename.index")
;; ...make some changes...
(save-index fti) ; load also stores the filename

Matt Wilson wrote this, with contributions from Andrew Brehaut. It's named after one of these guys.