#+TITLE: guile-xapian #+OPTIONS: *:nil #+MACRO: ci-badge [[https://ci.systemreboot.net/jobs/$1][https://ci.systemreboot.net/badge/$1.svg]] {{{ci-badge(guile-xapian-with-guile-2.2)}}} {{{ci-badge(guile-xapian-with-guile-3.0)}}} {{{ci-badge(guile-xapian-with-guile-3.0-latest)}}} {{{ci-badge(guile-xapian-website)}}} guile-xapian provides Guile bindings for [[https://xapian.org][Xapian]], a search engine library used in popular applications such as the [[https://notmuchmail.org/][notmuch]] email system. 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 may 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. When we are done, the user should not ever have to call the low level functions in (xapian wrap) and should be able to do almost everything using only the higher level Scheme-friendly functions in (xapian xapian). 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. *Warning:* guile-xapian is in a very early stage of development and the high level API in (xapian xapian) is not stable. It may change at any time. * Usage Drop into a development environment. #+BEGIN_SRC sh guix shell -Df 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 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 examples/search.scm /tmp/db watch ./pre-inst-env guile examples/search.scm /tmp/db Dent watch ./pre-inst-env guile examples/search.scm /tmp/db title:sunwatch ./pre-inst-env guile examples/search.scm /tmp/db description:\"leather case\" AND title:sundial #+END_SRC * Download [[https://repology.org/project/guile-xapian/versions][https://repology.org/badge/vertical-allrepos/guile-xapian.svg]] Download release tarballs. - 2024-05-10 [[./releases/guile-xapian-0.4.0.tar.lz][guile-xapian-0.4.0.tar.lz]] [[./releases/guile-xapian-0.4.0.tar.lz.asc][GPG Signature]] Download [[https://systemreboot.net/about/arunisaac.pub][public signing key]]. Browse the [[https://git.systemreboot.net/guile-xapian][development version]] of guile-xapian hosted in a git repository. * Contributing Feedback, suggestions, feature requests and bug reports are all welcome. Please write to me at [[mailto:arunisaac@systemreboot.net][arunisaac@systemreboot.net]]. * Contributors Thanks to these wonderful people! :-) - Bob131 :: bug reports, code, tests - Ricardo Wurmus :: bug reports, ideas - Ludovic Courtès :: bug reports * 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.