Swish-E Logo

The Swish-e README File

[ TOC ]

What is Swish-e?

Swish-e is Simple Web Indexing System for Humans - Enhanced. Swish-e can quickly and easily index directories of files or remote web sites and search the generated indexes.

Swish-e it extremely fast in both indexing and searching, highly configurable, and can be seamlessly integrated with existing web sites to maintain a consistent design. Swish-e can index web pages, but can just as easily index text files, mailing list archives, or data stored in a relational database.

Swish-e version 2.2 represents a major rewrite of the code and the addition of many new features. Memory requirements for indexing have been reduced, and indexing speed is significantly improved from previous versions. New features allow more control over indexing, better document parsing, improved indexing and searching logic, better filter code, and the ability to index from any data source.

Swish-e is not a ``turn-key'' indexing and searching solution. The Swish-e distribution contains most of the parts to create such a system, but you need to put the parts together as best meets your needs. This gives you the power to index and search your documents the way you wish and to seemlessly integrate a search engine into your web site or application.

You will need to configure Swish-e to index your documents, create an index by running Swish-e, and setup an interface such as a CGI script (a script is included). Swish uses helper programs to index documents of types that Swish-e cannot natively index. These programs may need to be installed separately from Swish-e.

Swish-e is an Open Source (see: ) program supported by developers and a large group of users. Please take time to join the Swish-e discussion list at

[ TOC ]

Key features

  • Quickly index a large number of documents in different formats including text, HTML, and XML

  • Use ``filters'' to index other types of files such as PDF, gzip, or Postscript.

  • Includes a web spider for indexing remote documents over HTTP. Follows Robots Exclusion Rules (including META tags).

  • Can use an external program to supply documents to Swish-e, such as an advanced spider for your web server or a program to read and format records from a relational database.

  • Document ``properties'' (some subset of the source document, usually defined as a META or XML elements) may be stored in the index and returned with search results

  • Document summaries can be returned with each search

  • Word stemming, soundex, metaphone, and double-metaphone indexing for ``fuzzy'' searching

  • Phrase searching and wildcard searching

  • Limit searches to HTML links

  • Use powerful Regular Expressions to select documents for indexing or exclusion

  • Easily limit searches to parts or all of your web site

  • Results can be sorted by relevance or by any number of properties in ascending or descending order

  • Limit searches to parts of documents such as certain HTML tags (META, TITLE, comments, etc.) or to XML elements.

  • Can report structural errors in your XML and HTML documents

  • Index file is portable between platforms.

  • A Swish-e library is provided to allow embedding Swish-e into your applications for very fast searching. A Perl module is available that provides a standard API for accessing Swish-e.

  • Includes example search script with context summaries and search term and phrase highlighting. Can be used with popular Perl templating systems.

  • Swish-e is fast.

  • It's open source and FREE! You can customize Swish-e and you can contribute your fancy new features to the project.

  • Supported by on-line user and developer groups

[ TOC ]

Where do I get Swish-e?

The current version of Swish-e can be found at:

Please make sure you use a current version of Swish-e.

Information about Windows binary distributions can also be found at this site.

[ TOC ]

How Do I Install Swish-e?

Read the INSTALL page.

Building from source is recommended. On most platforms Swish-e should build without problems. A list of platforms where Swish-e has been build can be found in the INSTALL page. Information on building for VMS and Win32 can be found in sub-directories of the src directory. Check the Swish-e site for information about binary distributions (such as for Windows).

In addition to the INSTALL page, make sure you read the SWISH-FAQ page if you have any questions, or to get an idea of questions that you might someday ask.

Problems or questions about installing Swish-e should be directed to the Swish-e discussion list (see the Swish-e web site at

Please read Where do I get help with Swish-e? below before posting any questions to the Swish-e list.

[ TOC ]

The Swish-e Documentation

Documetation is provided in the Swish-e distribution package in two forms, POD (Plain Old Documentation), and in html format. The POD documentation is in the pod directory, and the HTML documentation is in the html directory, of course.

If your system includes the required support files and programs, the distribution make files can also generate the documentation in these formats:

    PDF (Adobe Acrobat)
    system man pages

You may also build a ``split'' version of the documentation where each topic heading is a separate web page. Building the split version also creates a Swish-e index of the documentation that makes the documentation searchable via the included Perl CGI program.

Building these other forms of documentation require additional helper applications -- most modern Linux distributions will include all that's needed (at least mine does...). You shouldn't have a problem if you have kept your Perl and Perl libraries up to date.

Online documentation can be found at the Swish-e web site listed above.

See INSTALL for information on creating the PDF and Postscript versions of the documentation, and for information on installing the SWISH-* documentation as Unix man(1) pages.

[ TOC ]

How do I read the Swish-e documentation?

The Swish-e documentation included with the distribution is in POD and HTML formats. The POD documentation can be found in the pod directory, and the HTML documentation can be found in the html directory.

To view the HTML documentation point your browser to the html/index.html file.

The POD documentation is displayed by the ``perldoc'' command that is included with every Perl installation. For example, to view the Swish-e installation documentation page called ``INSTALL'', type

   perldoc pod/INSTALL

or to make life easier,

   cd pod
   perldoc INSTALL
   perldoc SWISH-RUN

Complain to your system administrator if the perldoc command is not available on your machine.

[ TOC ]

Included Documentation

The following documentation is included in this Swish-e distribution.

If you are new to Swish-e read the INSTALL page to get Swish-e installed and tested. Work through the example in shown in the INSTALL page, and the examples in the conf directory. Also review the SWISH-FAQ.

[ TOC ]

Document Generation

The Swish-e documentation in HTML format was created with Pod::HtmlPsPdf, a package of Perl modules written and/or modified by Stas Bekman to automate the conversion of documents in pod format (see perldoc perlpod) to HTML, Postscript, and PDF. A slightly modified version of this package is include with the Swish-e distribution and used for building the HTML. As distributed, Swish-e contains only the pod and HTML documentation. See INSTALL for instructions on creating man(1), Postscript, and PDF formats.

Thanks, Stas, for your help!

[ TOC ]

What's included in the Swish-e distribution?

Here's an overview of the directories included in the Swish-e distribution:


Example Swish-e configuration setups to help you get started. After reading the INSTALL page, and its included example, review the sample configuration in this directory.


In the conf/stopwords sub-directory are a number of stopword files for different languages. Use of stopwords is not required with Swish-e.


Contains files required for building the HTML, PDF, and Postscript documentation.


This contains a sample CGI script (swish.cgi) for searching with Swish-e. Documentation for using swish.cgi are included within the script. Type:

    perldoc example/swish.cgi

from the top-level directory where the Swish-e distribution was unpacked.


The filters directory contains Perl modules to convert documents from a format that Swish-e cannot index directly (pdf) to something that Swish-e can index (HTML). The modules simply make it easy to add filtering to external programs or to files indexed when spidering a remote web site.

See the filters/README file form more information.


Sample programs to use with Swish-e's FileFilter feature. The FileFilter allows running an external program to filter or convert documents before indexing. Examples include PDF, MS Word, and binary strings filters. Filters often require installing separate document conversion programs (e.g. catdoc or pdftotext).


The documentation in HTML format.


The Perl interface to the Swish-e C library. This Perl module provides direct access to Swish-e from within your Perl programs. See the perl/README file for more information.


The source for all documentation in perldoc (pod) format.


Example programs and modules to use with the ``prog'' document source access method. Examples include a web spider, a program to index directly from a MySQL database, and a program to recurse a directory tree. Example Perl modules are provided for converting PDF and MS-Word documents into a format usable by Swish-e. See prog-bin/README for an overview of the programs and modules, and check each file for included documentation.

The prog-bin/ program is a web spider program with many features. It contains its own documentation. Type:

    perldoc example/

from the top-level directory where the Swish-e distribution was unpacked.

The ``prog'' document source feature is very powerful, but can be a challange to set up when first using Swish-e. Please contact the Swish-e disussion list if you have any questions.


This directory contains the source code for Swish-e. OS-specific directories are also found here.


The documents used for running make test.

[ TOC ]

Where do I get help with Swish-e?

If you need help with installing or using Swish-e please subscribe to the Swish-e mailing list. Visit the Swish-e web site listed above for information on subscribing to the mailing list.

Before posting any questions please read QUESTIONS AND TROUBLESHOOTING in the INSTALL documentation page.

[ TOC ]

Speling mistakes

Please contact the Swish-e list with corrections to this documentation. Any help in cleaning up the docs will be appreciated!

Any patches should be made against the .pod files, not the .html files.

[ TOC ]

Swish-e Development

Swish-e is currently being developed as an open source project on SourceForge

Contact the Swish-e list for questions.

[ TOC ]

Swish-e's History

SWISH was created by Kevin Hughes circa 1994 to fill the need of the growing number of Web administrators on the Internet - many of the indexing systems were not well documented, were hard to use and install, and were too complex for their own good. The system was widely used for several years, long enough to collect some bug fixes and requests for enhancements.

In Fall 1996, The Library of UC Berkeley received permission from Kevin Hughes to implement bug fixes and enhancements to the original binary. The result is Swish-enhanced or Swish-e, brought to you by the Swish-e Development Team.

[ TOC ]

Document Info

Each document in the Swish-e distribution contains this section. It refers only to the specific page it's located in, and not to the Swish-e program or the documentation as a whole.

$Id: README.pod,v 1.12 2002/09/11 00:54:08 whmoseley Exp $

. [ TOC ]