---
name: "SWISH::API::Common"
section: "3pm"
platform: "linux"
package: "libswish-api-common-perl"
version: "0.04-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SWISH::API::Common"
---

# SWISH::API::Common(3pm)

SWISH Document Indexing Made Easy

## NAME

SWISH::API::Common - SWISH Document Indexing Made Easy

## SYNOPSIS

```
    use SWISH::API::Common;
    my $swish = SWISH::API::Common->new();
        # Index all files in a directory and its subdirectories
    $swish->index("/usr/local/share/doc");
        # After indexing once (it's persistent), fire up as many
        # queries as you like:
        # Search documents containing both "swish" and "install"
    for my $hit ($swish->search("swish AND install")) {
        print $hit->path(), "\n";
    }
```

## DESCRIPTION

`"SWISH::API::Common"` offers an easy interface to the Swish index engine. While SWISH::API offers a complete API, `"SWISH::API::Common"` focusses on ease of use.

THIS MODULE IS CURRENTLY UNDER DEVELOPMENT. THE API MIGHT CHANGE AT ANY TIME.

Currently, `"SWISH::API::Common"` just allows for indexing documents in a single directory and any of its subdirectories. Also, don't run **index()** and **search()** in parallel yet.

## INSTALLATION

`"SWISH::API::Common"` requires `"SWISH::API"` and the swish engine to be installed. Please download the latest release from

```
    http://swish-e.org/distribution/swish-e-2.4.3.tar.gz
```

and untar it, type

```
    ./configure
    make
    make install
```

and then install SWISH::API which is contained in the distribution:

```
    cd perl
    perl Makefile.PL
    make
    make install
```

### METHODS

- $sw = SWISH::API::Common-\>**new()**

  Constructor. Takes many options, but the defaults are usually fine.

  Available options and their defaults:

  ```
          # Where SWISH::API::Common stores index files etc.
      swish_adm_dir   "$ENV{HOME}/.swish-common"
          # The path to swish-e, relative is OK
      swish_exe       "swish-e"
          # Swish index file
      swish_idx_file  "$self->{swish_adm_dir}/default.idx"
          # Swish configuration file
      swish_cnf_file  "$self->{swish_adm_dir}/default.cnf"
          # SWISH Stemming
      swish_fuzzy_indexing_mode => "Stemming_en"
          # Maximum amount of data (in bytes) extracted
          # from a single file
      file_len_max 100_000
          # Preserve every indexed file's atime
      atime_preserve
  ```

- $sw-\>index($dir, ...)

  Generate a new index of all text documents under directory `$dir`. One\
    or more directories can be specified.

- $sw-\>search("foo AND bar");

  Searches the index, using the given search expression. Returns a list hits, which can be asked for their path:

  ```
          # Search documents containing
          # both "foo" and "bar"
      for my $hit ($swish->search("foo AND bar")) {
          print $hit->path(), "\n";
      }
  ```

- index\_remove

  Permanently delete the current index.

## TODO List

```
    * More than one index directory
    * Remove documents from index
    * Iterator for search hits
```

## LEGALESE

Copyright 2005 by Mike Schilli, all rights reserved. This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

## AUTHOR

2005, Mike Schilli \<cpan@perlmeister.com\>
