#+TITLE: guile-xapian #+OPTIONS: *:nil guile-xapian provides Guile bindings for [[https://xapian.org][Xapian]], a search engine library. Xapian is a highly adaptable toolkit which allows developers to easily add advanced indexing and search facilities to their own applications. It has built-in support for several families of weighting models and also supports a rich set of boolean query operators. Once these bindings are sufficiently mature, they will be merged with [[https://github.com/xapian/xapian/tree/master/xapian-bindings][xapian-bindings]]. This will involve creating more complete Scheme-friendly wrapping of the Xapian library, writing test cases and documentation. There is no proper documentation yet. See the examples in the source tree. Also see [[https://getting-started-with-xapian.readthedocs.io/en/latest/index.html][Getting Started with Xapian]] which describes the Python bindings. * Usage Drop into a development environment. #+BEGIN_SRC sh guix environment -l guix.scm #+END_SRC Bootstrap autotools, then configure and make. #+BEGIN_SRC sh ./bootstrap.sh ./configure make #+END_SRC Try out the examples. First, let's index data in examples/100-objects.sexp creating a Xapian database at /tmp/db. #+BEGIN_SRC sh ./pre-inst-env guile -s examples/index.scm examples/100-objects.sexp /tmp/db #+END_SRC Then, we may run searches on the database. Shown below are a few example searches. #+BEGIN_SRC sh ./pre-inst-env guile -s examples/search.scm /tmp/db watch ./pre-inst-env guile -s examples/search.scm /tmp/db Dent watch ./pre-inst-env guile -s examples/search.scm /tmp/db title:sunwatch ./pre-inst-env guile -s examples/search.scm /tmp/db description:\"leather case\" AND title:sundial #+END_SRC * Contributing Feedback, suggestions, feature requests and bug reports are all welcome. Please write to me at [[mailto:arunisaac@systemreboot.net][arunisaac@systemreboot.net]]. * License guile-xapian is free software released under the terms of the [[https://www.gnu.org/licenses/gpl-3.0.html][GNU General Public License]], either version 2 of the License, or (at your option) any later version.