Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
azure 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.
V aplikaci SQL Server Management Studio v Průzkumníku objektů rozbalte server.
Rozbalte Databáze, a potom rozbalte databázi, která obsahuje fulltextový index.
Rozbalte tabulky.
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 .
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).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.
Rozbalte skupinu serverů, rozbalte Databázea rozbalte databázi obsahující tabulku, kterou chcete povolit pro fulltextové indexování.
Rozbalte Tabulkya klikněte pravým tlačítkem myši na tabulku, kterou chcete zakázat nebo znovu povolit pro fulltextové indexování.
Vyberte Full-Textindexu a pak vyberte Zakázat indexu Full-Text nebo Povolit Full-Text index.
Odstraňte fulltextový index z tabulky
V Průzkumníku objektů klikněte pravým tlačítkem myši na tabulku s fulltextovým indexem, který chcete odstranit.
Vyberte Odstranit Full-Text index.
Po zobrazení výzvy vyberte OK, abyste potvrdili, že chcete odstranit fulltextový index.