Vytváření a správa fulltextových indexů
platí pro:SQL Server
Azure SQL Database
azure 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
- VYTVOŘIT FULLTEXTOVÝ INDEX (Transact-SQL)
- ALTER FULLTEXT INDEX (Transact-SQL)
- ODSTRANIT PLNÝ TEXTOVÝ INDEX (Transact-SQL)
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.
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. Otevře se dialogové okno Vlastnosti fulltextového indexu.
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).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.
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.
Další kroky
- Full-Text hledání
- uložené procedury hledání Full-Text a sémantické vyhledávání (Transact-SQL)
- Vytváření a správa katalogů Full-Text