登録済みのフィルターとワード ブレーカーを表示または変更する (SQL Server Search)

適用対象:SQL ServerAzure SQL データベースAzure SQL Managed Instance

ワード ブレーカーまたはフィルターをシステムにインストールまたはアンインストールした後、変更はサーバー インスタンスに対して自動的に有効になりません。 この記事では、現在登録されているワード ブレーカーまたはフィルターを表示する方法と、新しくインストールされたワード ブレーカーとフィルターを SQL Server のインスタンスに登録する方法について説明します。

Azure SQL Managed Instance では、登録済みのフィルターとワード ブレーカーの表示がサポートされていますが、変更はサポートされていません。 プレインストールされているファイルのみを使用できます。 サード パーティのフィルターとワード ブレーカーは、Azure SQL Managed Instance ではサポートされていません。

ワード ブレーカーが現在登録されている言語の一覧を表示する

sys.fulltext_languages カタログ ビューを使用します。次に例を示します。

SELECT *
FROM sys.fulltext_languages;

現在登録されているフィルターの一覧を表示する

sp_help_fulltext_system_components システム ストアド プロシージャを使用します。次に例を示します。

EXECUTE sp_help_fulltext_system_components 'filter';

新しくインストールされたワード ブレーカーおよびフィルターを登録する

sp_fulltext_service システム ストアド プロシージャを使用して、言語の一覧を更新します。次に例を示します。

EXECUTE sp_fulltext_service 'update_languages';

アンインストールされたワード ブレーカーおよびフィルターを登録解除する

  1. sp_fulltext_service を使用して、言語の一覧を更新します。次に例を示します。

    EXECUTE sp_fulltext_service 'update_languages';
    
  2. sp_fulltext_service を使用して、フィルター デーモン ホスト プロセス (fdhost.exe) を起動します。次に例を示します。

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';
    

ワード ブレーカーとフィルターを追加または置換する

対象:SQL Server 2025(17.x)以降のバージョン。

  1. SQL Server 2025 (17.x) 以降のバージョンの既定のフルテキスト インデックス バージョンは バージョン 2 です。 バージョン 2 の既定の DLL ファイルは、 C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\Binn\Ftcomponents\[Filters|wordbreakers] ディレクトリにあります。

  2. 既定をオーバーライドしたり、新しいコンポーネントを追加したりするには、version_overrides.json ディレクトリ内にC:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\FTData ファイルを作成します。

  3. ワード ブレーカーを追加または置換するには、JSON ファイルの languages セクションを更新します。 フィルターの場合は、 doctypes セクションを更新します。

    JSON 構造の例:

    {
       "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>": [{ ... }],
          }
    }
    

    version_overrides.json ファイルには、次の規則を考慮してください。

    • JSON ファイル内のすべてのフィールドは、 stemmerClsid (省略可能) を除いて必須です。

    • ロケール名には、標準ロケール名に従って、任意の BCP 47 ロケール名を指定できます。

    • 同じ言語とバージョン、または拡張機能とバージョンに重複するエントリが存在する場合は、最新のエントリが優先されます。

    • ハンドラー DLL は、既定のバイナリが配置されている C:\Program Files\Microsoft SQL Server\MSSQL17.<instance-name>\MSSQL\Binn\Ftcomponents\[Filters|wordbreakers] ディレクトリに関連するファイルへの相対パスにすることができます。 また、絶対パスを指定することもできます。 たとえば、システム バイナリでフィルターをオーバーライドするには、ハンドラーを次のように指定できます。

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

      重要

      署名済みコンポーネントと検証済みコンポーネントのみを読み込む必要があります。 DLL ファイルおよび ACL を含むフォルダーに正しいアクセス制御リスト (ACL) を構成します。 また、FDHOST Launcher (MSSQLFDLauncher) サービスは、最小限の特権で実行する必要があります。

  4. sp_fulltext_service を使用して、言語の一覧を更新します。次に例を示します。

    EXECUTE sp_fulltext_service 'update_languages';
    
  5. fdhost.exe を使用して、フィルター デーモン ホスト プロセス (sp_fulltext_service) を再起動します。次に例を示します。

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';
    

新しいワード ブレーカーまたはフィルターのインストール時に既存のワード ブレーカーまたはフィルターを置き換える

適用対象: SQL Server 2022 (16.x) 以前のバージョン。

  1. 新しいワード ブレーカーまたはフィルターを含む DLL ファイルをインストールする前に、サーバー インスタンスにインストールされている既存の DLL ファイルとは異なるファイル名があることを確認してください。

  2. サーバー インスタンスの標準 SQL Server DLL ファイルが格納されているディレクトリに新しい DLL ファイルをコピーします。 既定の場所は次のとおりです。

    C:\Program Files\Microsoft SQL Server\MSSQL.<instance_name>\MSSQL\Binn
    
  3. 新しいワード ブレーカーまたはフィルターをインストールします。

    Microsoft Filter Pack IFilters をインストールして読み込むには

  4. sp_fulltext_service を使用して、新しくインストールされたワード ブレーカーおよびフィルターをサーバー インスタンスに読み込みます。次に例を示します。

    EXECUTE sp_fulltext_service
        @action = 'load_os_resources',
        @value = 1;
    
  5. sp_fulltext_service を使用して、言語の一覧を更新します。次に例を示します。

    EXECUTE sp_fulltext_service 'update_languages';
    
  6. fdhost.exe を使用して、フィルター デーモン ホスト プロセス (sp_fulltext_service) を再起動します。次に例を示します。

    EXECUTE sp_fulltext_service 'restart_all_fdhosts';