セマンティック検索の管理と監視

適用対象SQL Server

この記事では、インデックスの状況とサイズの確認、人口の強制、セマンティックインデックスの無効化または再有効化方法について解説します。 セマンティックインデックスは、全文インデックスと組み合わせて2つのフェーズで行われます。

セマンティック インデックス作成の状態の確認

セマンティック インデックス作成の最初のフェーズは完了していますか?

sys.dm_fts_index_population動的管理ビューをクエリし、statusstatus_descriptionの列を確認してください。

インデックス作成の最初のフェーズでは、フルテキスト キーワード インデックスおよびセマンティック キー フレーズ インデックスの作成のほか、ドキュメンの類似性データの抽出が行われます。

USE database_name;
GO

SELECT *
FROM sys.dm_fts_index_population
WHERE table_id = OBJECT_ID('table_name');
GO

セマンティック インデックス作成の 2 番目のフェーズは完了していますか?

sys.dm_fts_semantic_similarity_population動的管理ビューをクエリし、status欄とstatus_description欄を確認してください。

インデックス作成の 2 番目のフェーズには、ドキュメントの類似性に関するセマンティック インデックスの作成が含まれます。

USE database_name;
GO

SELECT *
FROM sys.dm_fts_semantic_similarity_population
WHERE table_id = OBJECT_ID('table_name');
GO

セマンティック インデックスのサイズの確認

セマンティック キー フレーズ インデックスまたはドキュメントの類似性に関するセマンティック インデックスの論理サイズは?

sys.dm_db_fts_index_physical_stats動的管理ビューをクエリしてください。

論理サイズは、インデックス ページの数で表示されます。

USE database_name;
GO

SELECT *
FROM sys.dm_db_fts_index_physical_stats
WHERE object_id = OBJECT_ID('table_name');
GO

フルテキスト カタログのフルテキスト インデックスとセマンティック インデックスの合計サイズは?

IndexSizeメタデータ関数のプロパティをクエリします。

SELECT FULLTEXTCATALOGPROPERTY('catalog_name', 'IndexSize');
GO

フルテキスト カタログのフルテキスト インデックスおよびセマンティック インデックスでインデックス化されているアイテム数は?

ItemCountメタデータ関数のプロパティをクエリします。

SELECT FULLTEXTCATALOGPROPERTY('catalog_name', 'ItemCount');
GO

セマンティックインデックスの生成を強制する

STARTSTOPPAUSE、または RESUME POPULATION 句を使用すると、フルテキスト インデックスについて説明されているものと同じ構文および動作で、フルテキスト インデックスとセマンティック インデックスの作成を強制できます。 詳細については、ALTER FULLTEXT INDEX および フルテキスト インデックスの作成を参照してください。

セマンティック インデックス作成はフルテキスト インデックス作成に依存しているため、セマンティック インデックスは関連するフルテキスト インデックスが作成されたときにのみ作成されます。

例:全文索引と意味索引の完全な集団を開始する

以下の例は、Production.Documentサンプルデータベースの既存の全文インデックスをAdventureWorks2025テーブルに変更することで、全文索引と意味索引の両方の完全な集団を開始します。

USE AdventureWorks2025;
GO

ALTER FULLTEXT INDEX ON Production.Document
    START FULL POPULATION;
GO

セマンティック インデックスの作成の無効化または再有効化

全文またはセマンティックのインデックス作成は、本文インデックスで説明されているのと同じ構文と動作で、 ENABLE 節または DISABLE 節を使用することで有効または無効にできます。 詳細については、ALTER FULLTEXT INDEXを参照してください。

セマンティック インデックスの作成が無効化または中断された後でもセマンティック データに対するクエリは正常に動作し、以前にインデックスが作成されたデータを返します。 この挙動は Full-Text Searchの挙動とは一致しません。

-- To disable semantic indexing on a table
USE database_name;
GO

ALTER FULLTEXT INDEX ON table_name DISABLE;
GO

-- To re-enable semantic indexing on a table
USE database_name;
GO

ALTER FULLTEXT INDEX ON table_name ENABLE;
GO

セマンティック インデックス作成のフェーズについて

セマンティックサーチは、有効になっている各列ごとに2種類のデータをインデックス化します。

  1. キー フレーズ

  2. ドキュメントの類似性

セマンティック インデックス作成は、フルテキスト インデックス作成との関連において 2 つのフェーズで行われます。

  1. フェーズ 1: フルテキスト キーワード インデックスとセマンティック キー フレーズ インデックスが同時に作成されます。 ドキュメントの類似性に関するインデックスを作成するのに必要なデータもこのとき抽出されます。

  2. フェーズ 2: ドキュメントの類似性に関するセマンティック インデックスが作成されます。 このインデックスは、前のフェーズで作成された 2 つのインデックスに依存します。

問題点:意味インデックスが入力されていない

関連するフルテキスト インデックスが作成されていますか?

セマンティック インデックス作成はフルテキスト インデックス作成に依存しているため、セマンティック インデックスは関連するフルテキスト インデックスが作成されたときにのみ作成されます。

Full-Text 検索とセマンティックサーチは正しくインストール・設定されていますか?

詳細については、「 セマンティック検索のインストールと構成」を参照してください。

fdhostサービスが利用できないのか、それとも全文インデックスが失敗する他の条件があるのでしょうか?

詳細については、「 全文インデックス作成のトラブルシューティング」をご覧ください。