Creating custom smart search analyzers

If the selection of built‑in indexing analyzers is insufficient, you can specify custom‑written or third‑party analyzers for search indexes. Custom analyzers allow you to perform text tokenization according to any requirements. You can use custom analyzers with any type of smart search index.

To use a custom analyzer, you need to create and add the appropriate code files to your web project. Classes defining custom analyzers must:

  • Inherit from the Lucene.Net.Analysis.Analyzer class
  • Implement the CMS.Search.ISearchAnalyzer interface

Defining custom smart search analyzers for MVC sites

If you are utilizing the MVC development model, you also need to deploy your custom analyzer assembly to the separate MVC application to ensure that the analyzer is accessible for indexing operations and searches that occur on the live site.

Example

The following example demonstrates how to assign a custom analyzer to a smart search index. The sample analyzer divides text into tokens at non-letter characters and is case insensitive.

Adding the custom analyzer project

  1. Open your Kentico solution in Visual Studio.

  2. Add a new Class Library project to the Kentico solution, for example named CustomSearchAnalyzer.

  3. Add references to the required Kentico libraries (DLLs) for the new project:

    1. Right-click the project and select Add -> Reference.

    2. Select the Browse tab of the Reference manager dialog, click Browse and navigate to the Lib folder of your Kentico web project.

    3. Add references to the following libraries:

      • CMS.Base.dll
      • CMS.Core.dll
      • CMS.DataEngine.dll
      • CMS.Helpers.dll
      • CMS.Search.dll
      • Lucene.Net.v3.dll
  4. Reference the  CustomSearchAnalyzer project from the Kentico web project (CMSApp or CMS).

  5. Open your Kentico program files directory (by default C:\Program Files\Kentico\<version>) and expand the CodeSamples\CustomizationSamples\CustomSearchAnalyzer subfolder.

  6. Copy the following files into the CustomSearchAnalyzer directory in your web project:

    • CustomSearchAnalyzer.cs
    • SpaceTokenizer.cs
  7. Include the new files into the CustomSearchAnalyzer project in Visual Studio:

    1. Expand the CustomSearchAnalyzer project in the Solution Explorer.
    2. Click Show all files at the top of the Solution Explorer.
    3. Select the new files while holding the Ctrl key.
    4. Right-click one of the files and select Include in Project.
  8. Build the CustomSearchAnalyzer project (Build the entire solution on web application projects).

Assigning the custom analyzer to a search index

  1. Sign in to the Kentico administration interface and open the Smart search application.

  2. Open the Local indexes tab.

  3. Click New Index. Fill in the following properties:

    • Display name: Space analyzer page index
    • Index type: Pages
    • Analyzer type: Custom
    • Analyzer class - Assembly name: CustomSearchAnalyzer
    • Analyzer class - Class: CMS.CustomSearchAnalyzer.CustomSearchAnalyzer
  4. Click Save.

  5. Switch to the Indexed content tab and click Add allowed content.

  6. Type /% into the Path field to index all pages and click Save.

  7. Switch over to the Cultures tab and add the cultures used by your website.

  8. Go to the General tab and Rebuild the index.

You can test the index and its analyzer by switching to the Search preview tab and searching for words from the content of the website’s pages.