README.md

# StemEx

Porter stemming algorithm implementation in Elixir

The basic philosophy behind this implementation is to map the structure of
Martin Porter's original description of his
[algorithm](http://tartarus.org/~martin/PorterStemmer) as closely as possible
into Elixir.  The code makes liberal use of Elixir's pattern matching facility.
In order for this to work, there is one quirk - the word to be matched must be
reversed before it is stemmed: "hopping" becomes "gnippoh". This is necessary
because Elixir's pattern matching won't work with `stem <> "ing"` but instead
requires `"gni" <> rstem` (where `rstem` is the reversed stem).  Despite this
quirk, the flipping the words allowed us to greatly simplify the rest of the
coding, almost to the point of being a tedious translation of the textual
description of the algorithm.

## Installation

To install the escript (Elixir > 1.4):

`mix escript.install hex stem_ex`

To install the package:

  1. Add `stem_ex` to your list of dependencies in `mix.exs`:

    From Hex:

    ```elixir
    def deps do
      [{:stem_ex, "~> 0.0.1"}]
    end
    ```

    From GitHub:

    ```elixir
    def deps do
      [{:stem_ex, git: "git://github.com/andyl/stem_ex.git"}]
    end
    ```

  2. Ensure `stem_ex` is started before your application:

    ```elixir
    def application do
      [applications: [:stem_ex]]
    end
    ```