# Lucene stemming

**URL:** <https://forum.litium.com/t/lucene-stemming/948>\
**Category:** Questions\
**Created:** [June 27, 2019, 7:10am UTC](https://forum.litium.com/t/lucene-stemming/948 "2019-06-27T07:10:13Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![kristoffer](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/kristoffer/32/106_2.png) [@kristoffer](https://forum.litium.com/u/kristoffer)\
**Post date:** [June 27, 2019, 7:10am UTC](https://forum.litium.com/t/lucene-stemming/948/1 "2019-06-27T07:10:13Z")

</div>

Does anyone have experience using a stemming analyzer with Lucene in Litium? Where would be the appropriate place to configure it?

Litium version: N/A

---

<div class="post-metadata">

**Author:** ![patric.forsgard](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/patric.forsgard/32/10_2.png) [@patric.forsgard](https://forum.litium.com/u/patric.forsgard)\
**Post date:** [June 27, 2019, 7:31am UTC](https://forum.litium.com/t/lucene-stemming/948/2 "2019-06-27T07:31:45Z")

</div>

It exists multiple places you need to touch to add own analyzers into the Litium implementation.  
Analyzers is used for both indexing and searching. You need to create a reference to `Litium.Framework.Search.Lucene` NuGet package if it not already exists.

1. Configure so implementation knows about your analyzer

```auto
Litium.Framework.Search.Lucene.AnalyzerService
      .Instance
      .Factory.Analyzers
      .Add("my_analyzer", new global::Lucene.Net.Analysis.SimpleAnalyzer());

```

1. Change how data is indexed

```auto
using System;
using System.Linq;
using Litium.Foundation.Modules.ProductCatalog.Search;
using Litium.Foundation.Search.Providers;
using Litium.Framework.Search.Indexing;

namespace Litium.Accelerator.Search
{
    internal class AnalyzerProcessor : IIndexingProviderPreProcessor
    {
        public IndexDocument PreProcessDocument(IndexDocument document, string indexName)
        {
            if (ProductCatalogSearchDomains.Products.Equals(indexName, StringComparison.OrdinalIgnoreCase))
            {
                foreach (var tag in document.Tags.Where(x => x.Name.Equals("your_tag_name", StringComparison.OrdinalIgnoreCase)))
                {
                    tag.Analyzed = true;
                    tag.Analyzer = "my_analyzer";
                }
            }
            return document;
        }
    }
}

```

1. [Searching](https://docs.litium.com/documentation/architecture/search/analyzers)  
`request.FilterTags.Add(new Tag("your_tag_name", "value") { Analyzer = "my_analyzer" });`

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex030/uploads/litium/original/1X/12eddac3b8b661de1db86af10ac8151b571e6fb9.png) [@system](https://forum.litium.com/u/system)\
**Post date:** [July 25, 2019, 7:33am UTC](https://forum.litium.com/t/lucene-stemming/948/3 "2019-07-25T07:33:34Z")

</div>

Closed on July 25, 2019, 7:33am UTC

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
