Question: Firstly, I must say that the version of Lucene.NET we are using is not up to date as it came packaged with Sitecore 6.4.1 and until now we haven't had to dig too far into the use of Analyzers and Stemming (big mistake!).

Basically, we are trying to implement some form of Stemming, either at Index-time or Query-time (looking for advice on which is best?). The main problem we have is that all of the documentation about Stemming is in Java, which I am really struggling to bring over to C#. I am hopeful that someone can either provide source examples or links to resources in this area.

Due to the fact that our version of Lucene.NET is very old, I think the use of the Snowball Analyzer won't be possible (not even available in our verison), hence the reason we are considering the PorterStemFilter.

Can anyone provide any assistance / advice on how I can make Stemming work without having to upgrade Lucene?

Kind Regards

Steve

Answer: 
Usually you write your own Analyzer that builds the TokenStream chain. You will need to stem at Index and Search time.

You just use your Analyzer like any other.

Example Analyzer: 

```
public class MyAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, TextReader reader)
    {
        return new PorterStemFilter(new StandardTokenizer(reader));
    }
}

```
[Snowball](http://snowball.tartarus.org/) is the best afaik. There are implementations in C, Java, ... .
Just build your own Analyzer/Tokenfilter in your project.