Edit

Share via


View or change registered filters and word breakers (SQL Server Search)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance

After you install or uninstall word breakers or filters on a system, the changes don't automatically take effect on server instances. This article describes how to view the currently registered word breakers or filters and how to register newly installed word breakers and filters on an instance of SQL Server.

Note

Azure SQL Managed Instance supports viewing registered filters and word breakers, but changing them isn't supported. You can only use preinstalled ones. Third party filters and word breakers aren't supported on Azure SQL Managed Instance.

View a list of languages whose word breakers are currently registered

Use the sys.fulltext_languages catalog view, as follows:

SELECT *
FROM sys.fulltext_languages;

View a list of the filters that are currently registered

Use the sp_help_fulltext_system_components system stored procedure, as follows:

EXECUTE sp_help_fulltext_system_components 'filter';

Register newly installed word breakers and filters

Use the sp_fulltext_service system stored procedure to update the list of languages, as follows:

EXECUTE sp_fulltext_service 'update_languages';

Unregister uninstalled word breakers and filters

  1. Use the sp_fulltext_service to update the list of languages, as follows:

    EXECUTE sp_fulltext_service 'update_languages';
    
  2. Use the sp_fulltext_service to restart the filter daemon host processes (fdhost.exe), as follows:

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';
    

Add or replace word breakers and filters

Applies to: SQL Server 2025 (17.x) and later versions.

  1. The default full-text index version in SQL Server 2025 (17.x) and later versions is version 2. The default DLL files for version 2 are located in the C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\Binn\Ftcomponents\[Filters|wordbreakers] directory.

  2. To override default or add new component, create a version_overrides.json file inside the C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\FTData directory.

  3. To add or replace the word breaker, update the languages section in the JSON file. For filters, update the doctypes section.

    Sample JSON structure:

    {
       "languages": {
             "en": [{
                "version": 2,
                "handler": "MSWB7.dll",
                "wbClsid": "9faed859-0b30-4434-ae65-412e14a16fb8"
                "stemmerClsid": "e1e5ef84-c4a6-4e50-8188-99aef3de2659"
             }],
             "<BCP 47 locale name>": [{ ... }],
          }
    
       "doctypes": {
             ".html": [{
                "version": 2,
                "handler": "nlhtml.dll",
                "clsid": "e0ca5340-4534-11cf-b952-00aa0051fe20"
             }],
             ".<extension 2>": [{ ... }],
          }
    }
    

    Consider the following rules for the version_overrides.json file:

    • All fields in the JSON file are mandatory except stemmerClsid (optional).

    • Locale name can be any BCP 47 locale name, following standard locale names.

    • When duplicate entries exist for same language and version, or extension and version, the most recent entry takes precedence.

    • Handler DLL can be a relative path to the file in relation to the C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\Binn\Ftcomponents\[Filters|wordbreakers] directory where default binaries are located. It can also be an absolute path. For example, to override filter with a system binary, handler can be specified as follows:

      "handler": "%SystemRoot%\\system32\\windows.data.pdf.dll"
      

      Important

      You should load only signed and verified components. Configure the correct access control lists (ACLs) on DLL files and folders containing them. Also, you should run the FDHOST Launcher (MSSQLFDLauncher) Service with the least possible privileges.

  4. Use sp_fulltext_service to update the list of languages, as follows:

    EXECUTE sp_fulltext_service 'update_languages';
    
  5. Restart the filter daemon host processes (fdhost.exe), using sp_fulltext_service as follows:

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';
    

Replace existing word breakers or filters when installing new ones

Applies to: SQL Server 2022 (16.x) and earlier versions.

  1. Before you install a DLL file that contains new word breakers or filters, make sure that it has a different filename from any of the existing DLL files installed on your server instance.

  2. Copy the new DLL file into the directory containing the standard SQL Server DLL files for the server instance. The default location is:

    C:\Program Files\Microsoft SQL Server\MSSQL.<instance_name>\MSSQL\Binn
    
  3. Install the new word breaker or filters.

    To install and load Microsoft Filter Pack IFilters

  4. Use sp_fulltext_service to load newly installed word breakers and filters in the server instance, as follows:

    EXECUTE sp_fulltext_service
        @action = 'load_os_resources',
        @value = 1;
    
  5. Use sp_fulltext_service to update the list of languages, as follows:

    EXECUTE sp_fulltext_service 'update_languages';
    
  6. Restart the filter daemon host processes (fdhost.exe), using sp_fulltext_service as follows:

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';