Swish3 Development

Swish3 is the next major version (3.0) of Swish-e. See http://swish-e.org/swish3/ for more details.

The Swish3 C library svn: source:/libswish3/trunk

The TODO list: source:/libswish3/trunk/TODO

Peter has been blogging development of Swish3.

Read the FAQ and history of the project.

Prerequisites

Active development uses the Xapian backend. Grab the latest version either via your local package manager (say, via "yum install xapian-core xapian-devel") or compile from source (available at http://xapian.org/download.php. You only need the xapian-core package.)

Your distro may have xapian packaged as well (debian, etc).

If you use the code from SVN and not the snapshot, you'll also need the 'automake' and 'autoconf' packages (at least on RH systems, not sure what debian calls them).

If you have xapian-core installed, the libswish3 configure script should detect it and build the swish_xapian tool automatically.

Getting Started

Download and install libswish3. You can either grab the latest snapshot from http://swish-e.org/devel/daily.html or check out from svn trunk at http://svn.swish-e.org/libswish3/trunk . You can fetch the code libswish3 tree via a command like:

svn checkout http://svn.swish-e.org/libswish3/trunk libswish3

Then, cd into your new libswish3 directory and do

  % ./bootstrap && ./configure
  % make check

You should be able to take it from here :)

If you want to hack on the Perl implementation, check out the bindings from http://svn.swish-e.org/libswish3/trunk/bindings/perl (included if you checked out libswish3 from svn above). You'll also likely want SWISH::Prog, available from http://svn.swish-e.org/perl/SWISH-Prog/trunk . SWISH::Prog contains an example/swish3 script analogous to the swish-e tool. You'll also want SWISH::Prog::Xapian from http://svn.swish-e.org/perl/SWISH-Prog-Xapian/trunk . To fetch the SWISH::Prog source tree, you can use:

  svn checkout http://svn.swish-e.org/perl/SWISH-Prog/trunk SWISH-Prog

If you do not want to actually install all the components above but instead work out of your svn workspace, you'll need to set up your include paths to locate the various pieces. For Perl, this is usually as straightforward as setting PERL5LIB env var or putting a 'use lib' at the top of your Perl code.