Sdílet prostřednictvím


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

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Tento článek popisuje, jak vytvářet, naplnit a spravovat fulltextové indexy v SQL Serveru.

Vytvoření fulltextového katalogu

Než budete moct vytvořit fulltextový index, musíte mít fulltextový katalog. Katalog je virtuální kontejner pro jeden nebo více fulltextových indexů. Další informace najdete v tématu Vytváření a správa katalogů Full-Text.

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 (Transact-SQL) Vrátí řádek pro každý fulltextový katalog do odkazu na fulltextový index.
sys.fulltext_index_columns (Transact-SQL) Obsahuje řádek pro každý sloupec, který je součástí fulltextového indexu.
sys.fulltext_index_fragments (Transact-SQL) Fulltextový index používá interní tabulky označované jako fragmenty fulltextového indexu k uložení invertovaných dat indexu. Toto zobrazení lze 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 (Transact-SQL) Obsahuje jeden řádek pro každý fulltextový index tabulkového objektu.
sys.dm_fts_index_keywords (Transact-SQL) Vrátí informace o obsahu fulltextového indexu pro zadanou tabulku.
sys.dm_fts_index_keywords_by_document (Transact-SQL) 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 (Transact-SQL) 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. Otevře se dialogové okno Vlastnosti fulltextového indexu.

  5. V podokně Vyberte stránku můžete vybrat některou z následujících stránek:

    Stránka Popis
    obecné Zobrazí základní vlastnosti fulltextového indexu. Patří mezi ně několik upravitelných vlastností a mnoho neměnných vlastností, jako je název databáze, název tabulky a název sloupce s fulltextovým klíčem. 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 naleznete v tématu Naplnit Full-Text Indexy.
    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í indexů Full-Text.

    Poznámka: Po zavření dialogového okna Vlastnosti indexu Full-Text je jakýkoli nově vytvořený rozvrh přidružen k úloze agenta serveru SQL (Spustit přírůstkové naplnění tabulky na 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ů

K získání hodnoty různých vlastností fulltextového indexování lze použít několik Transact-SQL funkcí, jako je OBJECTPROPERTYEX. 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 Sloupec v tabulce, který obsahuje informace o typu dokumentu. COLUMNPROPERTY
JePlnotextověIndexováno Určuje, jestli byl sloupec povolený pro fulltextové indexování. 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 (vlastnost objektu)
TableHasActiveFulltextIndex Určuje, jestli má tabulka aktivní fulltextový index. OBJECTPROPERTYEX

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

Výsledek funkcí CONTAINSTABLE nebo FREETEXTTABLE s hodnotami sady řádků je obvykle potřeba spojit se základní tabulkou. V takových případech potřebujete znát název jedinečného klíčového sloupce. Můžete zjistit, jestli se daný jedinečný index používá jako fulltextový klíč, a můžete získat identifikátor sloupce s fulltextovým klíčem.

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

Pomocí příkazu SELECT volejte funkci INDEXPROPERTY. Ve volání funkce pomocí OBJECT_ID funkce převeďte název tabulky (table_name) na ID tabulky, zadejte název jedinečného indexu tabulky a zadejte IsFulltextKey index vlastnost následujícím způsobem:

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

Tento příkaz vrátí hodnotu 1, pokud se index používá k vynucení jedinečnosti sloupce s fulltextovým klíčem a 0, pokud ne.

Příklad

Následující příklad se dotazuje, zda se index PK_Document_DocumentNode používá k zajištění jedinečnosti klíčového sloupce pro fulltextové vyhledávání.

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

Tento příklad vrátí hodnotu 1, pokud se index PK_Document_DocumentNode používá k vynucení jedinečnosti sloupce s fulltextovým klíčem. V opačném případě vrátí hodnotu 0 nebo NULL. Hodnota NULL znamená, že používáte neplatný název indexu, název indexu neodpovídá tabulce, tabulka neexistuje nebo tak dále.

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

Každá plně textová tabulka obsahuje sloupec, který slouží k vynucení jedinečných řádků pro tabulku (jedinečný sloupec klíče). TableFulltextKeyColumn vlastnost, získaná z funkce OBJECTPROPERTYEX, obsahuje ID sloupce jedinečného klíčového sloupce.

Chcete-li získat tento identifikátor, můžete použít příkaz SELECT k volání OBJECTPROPERTYEX funkce. Pomocí funkce OBJECT_ID převeďte název tabulky (table_name) na ID tabulky a zadejte vlastnost TableFulltextKeyColumn následujícím způsobem:

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

Příklady

Následující příklad vrátí identifikátor sloupce s fulltextovým klíčem nebo null. Hodnota NULL znamená, že používáte neplatný název indexu, název indexu neodpovídá tabulce, tabulka neexistuje nebo tak dále.

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

Následující příklad ukazuje, jak pomocí identifikátoru jedinečného klíčového sloupce získat název sloupce.

USE AdventureWorks2022;
GO

DECLARE @key_column 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ý název indexu, název indexu neodpovídal tabulce, tabulka neexistovala atd., vrátila by hodnotu NULL.

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

Pokud je sloupec varbinary(max), varbinarynebo xml plnotextově indexován, může být vyhledáván pomocí plnotextových predikátů (CONTAINS a FREETEXT) a funkcí (CONTAINSTABLE a FREETEXTTABLE), stejně jako jakýkoli jiný plně textově indexovaný sloupec.

Index varbinary(max) nebo varbinary data

Jeden varbinary(max) nebo varbinary sloupec může ukládat mnoho typů dokumentů. SQL Server podporuje jakýkoli typ dokumentu, pro který je nainstalován a k dispozici filtr v operačním systému. Typ dokumentu každého dokumentu je identifikován příponou souboru dokumentu. Například pro příponu souboru .doc 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:

EXEC 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í být uloženy ve sloupci tabulky nazývaném sloupec typu, který musí být přidružen ke sloupci varbinary(max) v rámci fulltextového indexu. 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í Full-Text Hledání ve sloupcích XML.

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

V SQL Serveru jsou ve výchozím nastavení všechny uživatelem vytvořené databáze s povoleným fulltextovým vyhledáváním. 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.

V tabulce s fulltextovým indexem můžete tabulku ručně zakázat nebo znovu povolit pro fulltextové indexování pomocí aplikace 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.

Další kroky