Vytváření a správa fulltextových indexů

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Tento článek popisuje, jak vytvářet, vyplňovat a spravovat plnotextové indexy v Databázový stroj systému SQL Server. Index s plným textem podporuje vyhledávání podle klíčových slov a jazyka přes sloupce založené na znacích v tabulce.

Vytvoření fulltextového katalogu

Než můžete vytvořit index s plným textem, potřebujete katalog s plným textem. Katalog je virtuální kontejner pro jeden nebo více fulltextových indexů. Pro více informací viz Vytvářet a spravovat Full-Text katalogy.

Vytvoření, změna nebo odstranění fulltextového indexu

Naplnění plnotextového indexu

Proces vytváření a údržby fulltextového indexu se nazývá vyplnění (označuje se také jako procházení). Existují tři typy naplnění fulltextového indexu:

  • Úplná populace
  • Populace založená na sledování změn
  • Přírůstková populace založená na časovém razítku

Další informace najdete v tématu naplnění Full-Text indexů.

Zobrazení vlastností fulltextového indexu

Zobrazení vlastností fulltextového indexu pomocí Transact-SQL

Zobrazení katalogu nebo dynamické správy Popis
sys.fulltext_index_catalog_usages Vrátí řádek pro každý fulltextový katalog do odkazu na fulltextový index.
sys.fulltext_index_columns Obsahuje řádek pro každý sloupec, který je součástí fulltextového indexu.
sys.fulltext_index_fragments Fulltextový index používá interní tabulky nazývané fragmenty fulltextového indexu k ukládání invertovaných indexových dat. Tento pohled můžete použít k dotazování metadat o těchto fragmentech. Toto zobrazení obsahuje řádek pro každý fragment fulltextového indexu v každé tabulce, která obsahuje fulltextový index.
sys.fulltext_indexes Obsahuje jeden řádek pro každý fulltextový index tabulkového objektu.
sys.dm_fts_index_keywords Vrátí informace o obsahu fulltextového indexu pro zadanou tabulku.
sys.dm_fts_index_keywords_by_document Vrátí informace o obsahu na úrovni dokumentu fulltextového indexu pro zadanou tabulku. Dané klíčové slovo se může zobrazit v několika dokumentech.
sys.dm_fts_index_population Vrátí informace o populacích fulltextového indexu, které právě probíhají.

Zobrazení vlastností fulltextového indexu pomocí aplikace SQL Server Management Studio

Poznámka

Pokud chcete zobrazit vlastnosti fulltextových indexů pro databáze Azure SQL, použijte transact-SQL.

  1. V aplikaci SQL Server Management Studio v Průzkumníku objektů rozbalte server.

  2. Rozbalte Databáze, a potom rozbalte databázi, která obsahuje fulltextový index.

  3. Rozbalte tabulky.

  4. Pravým tlačítkem myši klikněte na tabulku, na které je definován fulltextový index, vyberte Full-Text indexa v kontextové nabídce Full-Text indexu vyberte Vlastnosti. Tato akce otevře dialogové okno Vlastnosti indexu plného textu .

  5. V panelu Vybrat stránku vyberte některou z následujících stránek:

    Stránka Popis
    obecné Zobrazí základní vlastnosti fulltextového indexu. Tyto vlastnosti zahrnují několik modifikovatelných vlastností a mnoho neměnných vlastností, jako je název databáze, název tabulky a název sloupce klíče s plným textem. Upravitelné vlastnosti jsou:

    Full-Text Stoplist indexů

    Full-Text povoleno indexování

    Sledování změn

    seznam vlastností hledání
    sloupce Zobrazí sloupce tabulky, které jsou k dispozici pro fulltextové indexování. Vybrané sloupce jsou fulltextově indexovány. Můžete vybrat tolik dostupných sloupců, kolik chcete zahrnout do fulltextového indexu. Další informace najdete v tématu naplnění Full-Text indexů.
    Plány Na této stránce můžete vytvořit nebo spravovat plány pro úlohu agenta SQL Serveru, která spouští přírůstkovou populaci tabulek pro populace fulltextového indexu. Další informace najdete v tématu naplnění Full-Text indexů.

    Poznámka: Po zavření dialogového okna Vlastnosti fulltextového indexu je každý nově vytvořený plán přidružen k úloze agenta SQL Server (Spustit přírůstkové naplnění tabulky v database_name.table_name).
  6. Výběrem OK uložte všechny změny a ukončete dialogové okno Vlastnosti fulltextového indexu.

Zobrazení vlastností indexovaných tabulek a sloupců

Můžete použít několik Transact-SQL funkcí, například OBJECTPROPERTYEX, k získání hodnoty různých vlastností indexování celého textu. Tyto informace jsou užitečné pro správu a řešení potíží s fulltextovým vyhledáváním.

Následující tabulka uvádí fulltextové vlastnosti související s indexovanými tabulkami a sloupci a jejich souvisejícími funkcemi Transact-SQL.

Vlastnost Popis Funkce
SloupecTypuPlnéhoTextu TYPE COLUMN v tabulce, která obsahuje informace o typu dokumentu ve sloupci. COLUMNPROPERTY
JePlnotextověIndexováno Specifikuje, zda je sloupec povolen pro indexování plného textu. COLUMNPROPERTY
JePlnotextovýKlíč Určuje, jestli je index fulltextovým klíčem tabulky. INDEXPROPERTY
TableFulltextBackgroundUpdateIndexOn Určuje, jestli má tabulka fulltextové indexování aktualizací na pozadí. OBJECTPROPERTYEX
TableFulltextCatalogId ID fulltextového katalogu, ve kterém jsou uložena fulltextová data indexu pro tabulku. OBJECTPROPERTYEX
TableFulltextChangeTrackingOn Určuje, jestli je u tabulky povolené fulltextové sledování změn. OBJECTPROPERTYEX
zpracovanéDokumentyPlnéhoTextu Počet řádků zpracovaných od začátku indexování fulltextu OBJECTPROPERTYEX
TableFulltextFailCount Počet řádků Full-Text, které nebyly indexovány vyhledáváním. OBJECTPROPERTYEX
Počet_textových_položek_v_tabulce Počet řádků, které byly úspěšně fulltextově indexovány. OBJECTPROPERTYEX
TableFulltextKeyColumn ID sloupce s fulltextovým jedinečným klíčem. OBJECTPROPERTYEX
TableFullTextMergeStatus Zda je tabulka s fulltextovým indexem momentálně ve stavu slučování. OBJECTPROPERTYEX
TabulkaČekajícíZměnyCeléhoTextu Počet čekajících položek sledování změn, které se mají zpracovat. OBJECTPROPERTYEX
TableFulltextPopulateStatus Stav fulltextové tabulky populace OBJECTPROPERTYEX
TableHasActiveFulltextIndex Určuje, jestli má tabulka aktivní fulltextový index. OBJECTPROPERTYEX

Získejte informace o sloupci fulltextového klíče

Obvykle spojíte výsledek funkcí CONTAINSTABLE nebo FREETEXTTABLE, které vracejí sadu řádků, se základní tabulkou. V takových případech potřebujete znát název jedinečného klíčového sloupce. Můžete zkontrolovat, zda je daný unikátní index použit jako fulltextový klíč, a získat identifikátor sloupce fulltextového klíče.

Určení, jestli se daný jedinečný index používá jako sloupec s fulltextovým klíčem

Pomocí příkazu SELECT volejte funkci INDEXPROPERTY. Při volání funkce použijte OBJECT_ID funkci k převodu názvu tabulky (table_name) na ID tabulky, zadejte název unikátního indexu tabulky a specifikujte vlastnost indexu IsFulltextKey následovně:

SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');

Tento příkaz vrátí 1 , pokud index vynucuje jedinečnost pro sloupec s plným textem klíče a 0 pokud ne.

Příklad

Následující příklad kontroluje, zda PK_Document_DocumentNode index vynucuje jedinečnost pro sloupec plného textu klíče:

USE AdventureWorks2025;
GO

SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');

Tento příklad vrátí 1, pokud PK_Document_DocumentNode index vynucuje jedinečnost pro sloupec plného textu klíče. Jinak vrací 0 nebo NULL. NULL To znamená, že používáte neplatné jméno indexu, název indexu neodpovídá tabulce, tabulka neexistuje a podobně.

Vyhledání identifikátoru sloupce s fulltextovým klíčem

Každá tabulka s plným textem má sloupec, který vynucuje unikátní řádky pro tabulku (unikátní klíčový sloupec). Vlastnost TableFulltextKeyColumn, získaná z funkce OBJECTPROPERTYEX, obsahuje ID sloupce s jedinečným klíčem.

Pro získání tohoto identifikátoru použijte příkaz, SELECT který volá OBJECTPROPERTYEX funkci. Použijte OBJECT_ID funkci k převodu názvu tabulky (table_name) na ID tabulky a specifikujte TableFulltextKeyColumn vlastnost následovně:

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';

Příklady

Následující příklad vrací identifikátor sloupce plného textu klíče nebo NULL. NULL Naznačuje, že používáte neplatné jméno indexu, název indexu neodpovídá tabulce, tabulka neexistuje a podobně.

USE AdventureWorks2025;
GO

SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

Následující příklad ukazuje, jak použít identifikátor sloupce unikátního klíče k získání názvu sloupce.

USE AdventureWorks2025;
GO

DECLARE @key_column AS SYSNAME;

SET @key_column = COL_NAME(
    OBJECT_ID('Production.Document'),
    OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);

SELECT @key_column AS 'Unique Key Column';
GO

Tento příklad vrátí sloupec sady výsledků s názvem Unique Key Column, který zobrazí jeden řádek obsahující název jedinečného klíčového sloupce tabulky Document, DocumentNode. Pokud tento dotaz obsahoval neplatné jméno indexu, index neodpovídal tabulce, tabulka neexistovala a tak dále, vrací .NULL

Indexování sloupců varbinary(max) a XML

Pokud vytvoříte fulltextový index na sloupci varbinary(max), varbinary nebo xml, můžete jej prohledávat pomocí fulltextových predikátů (CONTAINS a FREETEXT) a funkcí (CONTAINSTABLE a FREETEXTTABLE), stejně jako jakýkoli jiný sloupec s fulltextovým indexem.

Index varbinary(max) nebo varbinary data

Jeden varbinary(max) nebo varbinary sloupec může ukládat mnoho typů dokumentů. Database Engine podporuje jakýkoli typ dokumentu, pro který je filtr nainstalován a dostupný v operačním systému. Typ dokumentu každého dokumentu je identifikován příponou souboru dokumentu. Například pro .doc příponu souboru používá fulltextové vyhledávání filtr, který podporuje dokumenty Microsoft Word. Pro seznam dostupných typů dokumentů se dotazujte na zobrazení katalogu sys.fulltext_document_types.

Modul Full-Text může používat existující filtry nainstalované v operačním systému. Než budete moci použít filtry operačního systému, nástroje na dělení slov a stemmery, musíte je načíst do instance serveru následujícím způsobem:

EXECUTE sp_fulltext_service
    @action = 'load_os_resources',
    @value = 1;

K vytvoření fulltextového indexu ve sloupci varbinary(max) potřebuje modul Full-Text přístup k příponám souborů dokumentů ve sloupci varbinary(max). Tyto informace musíte uložit do sloupce tabulky, nazývaného sloupec typ, který přiřadíte sloupci varbinary(max) v indexu plného textu. Při indexování dokumentu používá modul Full-Text příponu souboru ve sloupci typu k identifikaci filtru, který se má použít.

Indexování dat XML

Sloupec xml datového typu ukládá pouze dokumenty XML a fragmenty a pro dokumenty se používá pouze filtr XML. Proto sloupec typu není nutný. Při xml sloupců indexuje fulltextový index obsah elementů XML, ale ignoruje kód XML. Hodnoty atributů jsou indexovány fulltextem, pokud nejsou číselné hodnoty. Značky elementů se používají jako hranice tokenů. Podporují se dobře formátované dokumenty XML nebo HTML a fragmenty obsahující více jazyků.

Další informace o indexování a dotazování ve sloupci xml najdete v tématu Použití fulltextového vyhledávání se sloupci XML.

Zakázání nebo opětovné povolení fulltextového indexování pro tabulku

V Database Engine jsou všechny uživatelsky vytvořené databáze ve výchozím nastavení povoleny s plným textem. Jednotlivé tabulky se navíc automaticky povolí pro fulltextové indexování, jakmile se na něm vytvoří fulltextový index a do indexu se přidá sloupec. Tabulka se automaticky zakáže pro fulltextové indexování, když se poslední sloupec zahodí z jeho fulltextového indexu.

U tabulky s indexem plného textu můžete ručně vypnout nebo znovu povolit tabulku pro indexování celého textu pomocí SQL Server Management Studio.

  1. Rozbalte skupinu serverů, rozbalte Databázea rozbalte databázi obsahující tabulku, kterou chcete povolit pro fulltextové indexování.

  2. Rozbalte Tabulkya klikněte pravým tlačítkem myši na tabulku, kterou chcete zakázat nebo znovu povolit pro fulltextové indexování.

  3. Vyberte Full-Textindexu a pak vyberte Zakázat indexu Full-Text nebo Povolit Full-Text index.

Odstraňte fulltextový index z tabulky

  1. V Průzkumníku objektů klikněte pravým tlačítkem myši na tabulku s fulltextovým indexem, který chcete odstranit.

  2. Vyberte Odstranit Full-Text index.

  3. Po zobrazení výzvy vyberte OK, abyste potvrdili, že chcete odstranit fulltextový index.