Sdílet prostřednictvím


ALTER FULLTEXT INDEX (Transact-SQL)

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Mění vlastnosti plnotextového indexu v SQL Serveru.

Transact-SQL konvence syntaxe

Syntaxe

ALTER FULLTEXT INDEX ON table_name
   { ENABLE
   | DISABLE
   | SET CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF }
   | ADD ( column_name
           [ TYPE COLUMN type_column_name ]
           [ LANGUAGE language_term ]
           [ STATISTICAL_SEMANTICS ]
           [ , ...n ]
         )
     [ WITH NO POPULATION ]
   | ALTER COLUMN column_name
     { ADD | DROP } STATISTICAL_SEMANTICS
     [ WITH NO POPULATION ]
   | DROP ( column_name [ , ...n ] )
     [ WITH NO POPULATION ]
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | { STOP | PAUSE | RESUME } POPULATION
   | SET STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
     [ WITH NO POPULATION ]
   | SET SEARCH PROPERTY LIST [ = ] { OFF | property_list_name }
     [ WITH NO POPULATION ]
   }
[ ; ]

Arguments

table_name

Název tabulky nebo indexovaného pohledu, který obsahuje sloupec nebo sloupce zahrnuté v indexu plného textu. Specifikace jmen vlastníků databází a tabulek je volitelná.

POVOLIT | VYPNOUT

Říká SQL Serveru, zda má shromáždit data z indexu plného textu pro table_name. ENABLE aktivuje index plného textu; DISABLE vypne index plného textu. Tabulka nepodporuje dotazy v plném textu, dokud je index vypnutý.

Vypnutí indexu s plným textem vám umožní vypnout sledování změn, ale zachovat si celý textový index, který můžete kdykoli znovu aktivovat pomocí ENABLE. Když je full-text index deaktivován, metadata fulltextového indexu zůstávají v systémových tabulkách. Pokud je CHANGE_TRACKING ve stavu povoleného (automatická nebo manuální aktualizace), když je fulltext indexu zakázán, stav indexu zamrzne, veškeré probíhající procházení se zastaví a nové změny v datech tabulky nejsou sledovány ani propagovány do indexu.

NASTAVTE CHANGE_TRACKING { MANUAL | AUTO | VYPNUTO }

Specifikuje, zda změny (aktualizace, mazání nebo vložení) provedené ve sloupcích tabulky, které jsou pokryty indexem plného textu, budou SQL Server propagovat do indexu plného textu. Změny dat prostřednictvím WRITETEXT a UPDATETEXT se v indexu plného textu neodrážejí a nejsou zachyceny sledováním změn.

Poznámka:

Pro více informací viz Interactions of Change Tracking a NO POPULATION Parameter.

  • MANUÁL

    Specifikuje, že sledované změny jsou propagovány ručně voláním ALTER FULLTEXT INDEX ... ZAHAJTE AKTUALIZACI POPULACE Transact-SQL VÝKAZ (RUČNÍ POPULACE). Agenta SQL Serveru můžete použít k pravidelnému volání tohoto příkazu Transact-SQL.

  • AUTO

    Specifikuje, že sledované změny jsou automaticky propagovány při úpravě dat v základní tabulce (automatická populace). Ačkoli jsou změny šířeny automaticky, nemusí být okamžitě zobrazeny v indexu plného textu. AUTO je výchozí nastavení.

  • Vypnuto

    Specifikuje, že SQL Server neuchovává seznam změn v indexovaných datech.

PŘIDAT | POLOŽTE column_name

Specifikuje sloupce, které mají být přidány nebo odstraněny z indexu plného textu. Sloupec nebo sloupce musí být typu char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary nebo varbinary(max).

Použijte klauzuli DROP pouze u sloupců, které byly dříve povoleny pro indexování plného textu.

Použijte TYPE COLUMN a LANGUAGE s klauzulí ADD pro nastavení těchto vlastností na column_name. Když je sloupec přidán, je nutné znovu vyplnit index plného textu tabulky, aby mohly fungovat dotazy na celý text proti tomuto sloupci.

Poznámka:

Zda je celý textový index vyplněn po přidání sloupce nebo odstraněn z celého textového indexu, závisí na tom, zda je sledování změn povoleno a zda je specifikováno WITH NO POPULATION. Pro více informací viz Interactions of Change Tracking a NO POPULATION Parameter.

TYP SLOUPCE type_column_name

Specifikuje název sloupce tabulky type_column_name, který slouží k uložení typu dokumentu pro varbinární, varbinární(max)nebo obrazový dokument. Tento sloupec, známý jako typový sloupec, obsahuje uživatelem dodanou příponu souboru (.doc, .pdf, .xls, a podobně). Sloupec typu musí být typu char, nchar, varchar nebo nvarchar.

Specifikujte SLOUPEC TYP type_column_name pouze tehdy, pokud column_name specifikuje varbinární, varbinární(max) nebo obrazový sloupec, ve kterém jsou data uložena jako binární data; v opačném případě SQL Server vrací chybu.

Poznámka:

Při indexování používá Full-Text Engine zkratku ve sloupci type každého řádku tabulky k určení, který fulltextový vyhledávací filtr použít pro dokument v column_name. Filtr načte dokument jako binární proud, odstraní informace o formátování a odešle text z dokumentu do komponenty word-breaker. Další informace najdete v tématu Konfigurace a správa filtrů pro vyhledávání.

LANGUAGE_TERM JAZYKA

Jazyk dat uložených v column_name.

language_term je volitelný a může být zadán jako řetězec, celočíselná nebo hexadecimální hodnota odpovídající lokálnímu identifikátoru (LCID) jazyka. Pokud je zadán language_term , jazyk, který představuje, se použije na všechny prvky podmínky hledání. Pokud není uvedena žádná hodnota, použije se výchozí plnotextový jazyk instance SQL Serveru.

Použijte uloženou proceduru sp_configure k přístupu k informacím o výchozím plnotextovém jazyce instance SQL Serveru.

Když je zadán sys.syslanguages jako řetězec, odpovídá language_term sloupcové alias hodnotě v systémové tabulce. Řetězec musí být uzavřený v jednoduchých uvozovkách, jako v "language_term". Pokud je zadáno jako celé číslo, language_term je skutečný identifikátor LCID, který identifikuje jazyk. Pokud je zadána jako hexadecimální hodnota, language_term je 0x následovaná šestihrannou hodnotou LCID. Hodnota hexu nesmí přesáhnout osm číslic, včetně vedoucích nul.

Pokud je hodnota ve formátu dvoubajtové znakové sady (DBCS), SQL Server ji převede na Unicode.

Zdroje, jako jsou word breakery a stemmery, musí být povoleny pro jazyk uvedený jako language_term. Pokud takové zdroje nepodporují daný jazyk, SQL Server vrátí chybu.

Pro sloupce bez BLOB a ne-XML obsahující textová data ve více jazycích, nebo pro případy, kdy jazyk textu uloženého ve sloupci není znám, použijte neutrální (0x0) jazykový zdroj. U dokumentů uložených ve sloupcích typu XML nebo BLOB se při indexování používá jazykové kódování v dokumentu. Například ve sloupcích XML atribut v XML dokumentech identifikuje xml:lang jazyk. V době dotazu se hodnota dříve zadaná v language_term stává výchozím jazykem používaným pro dotazy na plný text, pokud language_term není specifikována jako součást plnotextového dotazu.

STATISTICAL_SEMANTICS

platí pro: SQL Server 2012 (11.x) a novější verze.

Vytváří další indexy podobnosti klíčových frází a dokumentů, které jsou součástí statistického sémantického indexování. Další informace naleznete v tématu sémantické vyhledávání (SQL Server).

[ , ... n ]

Označuje, že pro klauzule ADD, ALTER nebo DROP může být určeno více sloupců. Když je specifikováno více sloupců, oddělte je čárkami.

BEZ OBYVATELSTVA

Specifikuje, že celý textový index nebude vyplněn po operaci sloupců ADD nebo DROP nebo po operaci SET STOPLIST. Index se naplní pouze tehdy, pokud uživatel spustí START... Velitelství POPULATION.

Pokud není specifikována ŽÁDNÁ POPULACE, SQL Server nevyplní index. Index se naplní až poté, co uživatel zadá ALTER FULLTEXT INDEX... SPUSTIT VELENÍ POPULACE. Když není uvedena ŽÁDNÁ POPULACE, SQL Server vyplní index.

Pokud je CHANGE_TRACKING povoleno a je specifikována BEZ POPULACE, SQL Server vrátí chybu. Pokud je CHANGE_TRACKING povoleno a BEZ POPULACE není specifikováno, SQL Server provede plnou populaci na indexu.

Poznámka:

Pro více informací viz Interactions of Change Tracking a NO POPULATION Parameter.

{ADD | DROP } STATISTICAL_SEMANTICS

platí pro: SQL Server 2012 (11.x) a novější verze.

Povoluje nebo zakazuje statistické sémantické indexování pro specifikované sloupce. Další informace naleznete v tématu sémantické vyhledávání (SQL Server).

START { FULL | PŘÍRŮSTEK | AKTUALIZACE } POPULACE

Říká SQL Serveru, aby zahájil zaplňování plnotextového indexu table_name. Pokud už probíhá populace indexů s plným textem, SQL Server zobrazí varování a nespustí novou populaci.

  • ÚPLNÝ

    Specifikuje, že každý řádek tabulky je získán pro indexování plného textu, i když už byly řádky indexovány.

  • INCREMENTAL

    Specifikuje, že pro indexování plného textu jsou získány pouze upravené řádky od poslední populace. INCREMENTAL lze aplikovat pouze tehdy, pokud tabulka obsahuje sloupec s časovým razítkem typu (timestamp). Pokud tabulka v katalogu s plným textem neobsahuje sloupec časového razítka typu, tabulka prochází PLNOU populací.

  • Aktualizace

    Specifikuje zpracování všech vložení, aktualizací nebo mazání od poslední aktualizace indexu sledování změn. Populace sledující změnu musí být zapnuta v tabulce, ale index aktualizací na pozadí nebo sledování automatických změn by neměly být zapnuté.

{STOP | PAUZA | ŽIVOTOPIS } POPULACE

Zastaví nebo pozastaví jakoukoli probíhající populaci; nebo zastaví či obnoví jakoukoli pozastavenou populaci.

STOP POPULATION nezastavuje automatické sledování změn ani index aktualizací pozadí. Pro zastavení sledování změn použijte NASTAVIT CHANGE_TRACKING VYPNUTO.

PAUZA POPULACE a RESUME POPULACE lze použít pouze pro plné populace. Nejsou relevantní pro jiné typy populací, protože ostatní populace pokračují v procházení od místa, kde procházení skončilo.

SET STOPLIST { OFF | SYSTÉM | stoplist_name }

Mění celotextový seznam stop přiřazený indexu, pokud existuje.

  • Vypnuto

    Specifikuje, že žádný stoplist není spojen s plným textovým indexem.

  • SYSTEM

    Specifikuje, že pro tento fulltextový index by měl být použit výchozí fulltextový systém STOPLIST.

  • stoplist_name

    Specifikuje název seznamu stop, který má být spojen s indexem plného textu.

Pro více informací viz Konfigurace a správa stopwordů a stoplistů pro Full-Text Search.

NASTAVIT SEARCH PROPERTY LIST { OFF | property_list_name } [ BEZ POPULACE ]

platí pro: SQL Server 2012 (11.x) a novější verze.

Změní seznam vlastností vyhledávání, které jsou s indexem spojeny, pokud existuje.

  • Vypnuto

    Specifikuje, že s indexem plného textu není přiřazen žádný seznam vlastností. Když vypnete seznam vlastností vyhledávání v indexu s plným textem (ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF), vyhledávání vlastností v základní tabulce již není možné.

    Ve výchozím nastavení, když vypnete existující seznam vyhledávacích vlastností, celý textový index se automaticky znovu naplní. Pokud při vypnutí seznamu vyhledávání nemovitostí zadáte WITH NO POPULATION, AUTOMATICKÉ ZNOVUOSÍDLENÍ NENASTANE. Doporučujeme však, abyste nakonec provedli plnou populaci na tomto plnotextovém indexu, kdykoli vám to bude vyhovovat. Opětovné vyplnění celého textového indexu odstraní metadata specifická pro vlastnosti každé vypuštěné vyhledávací vlastnosti, čímž se index plného textu zmenšuje a stává se efektivnějším.

  • property_list_name

    Specifikuje název seznamu vlastností vyhledávání, které má být spojeno s indexem plného textu.

    Přidání seznamu vyhledávacích vlastností do plnotextového indexu vyžaduje opětovné naplnění indexu pro indexování vyhledávacích vlastností registrovaných pro příslušný vyhledávací seznam vlastností. Pokud při přidání vyhledávacího seznamu vlastností zadáte WITH NO POPULATION, musíte spustit populaci v indexu ve vhodnou dobu.

Důležité

Pokud byl celý textový index dříve přiřazen k jinému vyhledávání, musí být znovu sestaven seznam vlastností, aby se index dostal do konzistentního stavu. Index je okamžitě oříznut a je prázdný, dokud neproběhne celá populace. Pro více informací viz Změna seznamu vlastností vyhledávání způsobuje přestavbu indexu.

Poznámka:

Můžete přiřadit daný seznam vlastností vyhledávání s více než jedním indexem plného textu ve stejné databázi.

Najděte seznamy vlastností vyhledávání v aktuální databázi

Pro více informací o vyhledávání v seznamech nemovitostí viz Vyhledávat dokumenty nemovitostí pomocí Vyhledávání v seznamu nemovitostí.

Poznámky

Na sloupcích XML můžete vytvořit plnotextový index, který indexuje obsah XML prvků, ale ignoruje XML značkování. Hodnoty atributů jsou indexovány v plném textu, pokud nejsou číselné. Prvky se používají jako hranice tokenů. Podporovány jsou dobře zpracované XML nebo HTML dokumenty a fragmenty obsahující více jazyků. Další informace najdete v tématu Použití Full-Text vyhledávání se sloupci XML.

Doporučujeme, aby sloupec indexového klíče byl celočíselný datový typ. To poskytuje optimalizace při provádění dotazu.

ALTER FULLTEXT INDEX nelze umístit do uživatelské transakce. Tento výrok musí být spuštěn ve vlastní implicitní transakci.

Pro více informací o plnotextových indexech viz Vytvořit a spravovat Full-Text indexy.

Interakce sledování změn a ABSENCE POPULATION parametru

Zda je full-text index vyplněn, závisí na tom, zda je sledování změn povoleno a zda je v příkazu ALTER FULLTEXT INDEX specifikováno WITH NO POPULATION. Následující tabulka shrnuje výsledek jejich interakce.

Sledování změn BEZ OBYVATELSTVA Result
Neaktivováno Neurčeno Na indexu se provádí celá populace.
Neaktivováno Specifikovaný Žádná populace indexu nenastane, dokud nenastane ALTER FULLTEXT INDEX... Je vydáno hlášení o populaci START.
Enabled Specifikovaný Chyba se objeví a index se nezmění.
Enabled Neurčeno Na indexu se provádí celá populace.

Pro více informací o vyplňování indexů s plným textem viz Doplňovat Full-Text Indexy.

Změna seznamu vlastností vyhledávání způsobí přestavbu indexu

Poprvé, když je plnotextový index spojen se seznamem vyhledávacích vlastností, musí být index znovu vyplněn, aby indexoval vyhledávací výrazy specifické pro vlastnosti. Stávající indexová data nejsou zkrácena.

Pokud však přiřadíte plnotextový index s jiným seznamem vlastností, index se znovu sestaví. Přestavba okamžitě zkrátí celý textový index, odstraní všechna existující data a index musí být znovu doplněn. Během postupu populace dotazy v základní tabulce vyhledávají pouze v tabulkových řádcích, které již byly populací indexovány. Znovu vyplněná data indexu zahrnují metadata z registrovaných vlastností nově přidaného seznamu vyhledávacích vlastností.

Scénáře, které způsobují obnovu, zahrnují:

  • Přejděte přímo na jiný seznam vlastností vyhledávání (viz "Scénář A" později v této části).

  • Vypněte seznam vlastností vyhledávání a později přiřaďte index k libovolnému seznamu vyhledávacích vlastností (viz "Scénář B" později v této části).

Poznámka:

Pro více informací o tom, jak funguje fulltextové vyhledávání s vyhledávacími seznamy nemovitostí, viz Vyhledávat dokumenty vlastností pomocí Vyhledávat seznamy nemovitostí. Pro informace o celých populacích viz Populovat Full-Text Indexy.

Scénář A: Přejděte přímo na jiný seznam vyhledávacích vlastností

  1. Na je vytvořen plnotextový index s table_1 vyhledávacím seznamem spl_1:

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index
        WITH SEARCH PROPERTY LIST=spl_1,
        CHANGE_TRACKING OFF, NO POPULATION;
    
  2. Na indexu plného textu se provádí celá populace:

    ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;
    
  3. Index s plným textem je později přiřazen k jinému seznamu spl_2vyhledávacích vlastností , pomocí následujícího příkazu:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;
    

    Toto tvrzení způsobuje plnou populaci, což je výchozí chování. Před zahájením této populace však Full-Text Engine automaticky zkracuje index.

Scénář B: Vypněte seznam vyhledávacích vlastností a později přiřaďte index k libovolnému seznamu vyhledávacích vlastností

  1. Na je vytvořen plnotextový index s table_1 vyhledávacím vlastností spl_1, následovaný automatickou plnou populací (výchozí chování):

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index
        WITH SEARCH PROPERTY LIST=spl_1;
    
  2. Seznam vlastností vyhledávání je vypnutý, následovně:

    ALTER FULLTEXT INDEX ON table_1
        SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
    
  3. Plnotextový index je opět přiřazen buď ke stejnému seznamu vyhledávacích vlastností, nebo k jinému.

    Například následující příkaz znovu přiřazuje celotextový index k původnímu seznamu vlastností vyhledávání, spl_1:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;
    

    Toto tvrzení spouští plnou populaci, výchozí chování.

    Poznámka:

    Přestavba by byla také nutná pro jiný seznam vyhledávacích vlastností, například spl_2.

Povolení

Uživatel musí mít ALTER oprávnění k tabulce nebo indexovanému pohledu, nebo být členem role pevného správce systému , případně role db_ddladmin či db_owner pevné databáze.

Pokud je SET STOPLIST uveden, uživatel musí mít na stoplistu povolení REFERENCE. Pokud je specifikován NASTAVIT SEZNAM VLASTNOSTÍ VYHLEDÁVÁNÍ, musí mít uživatel oprávnění ODKAZY na seznamu vlastností vyhledávání. Vlastník určeného stoplistu nebo vyhledávacího seznamu vlastností může udělit oprávnění REFERENCE, pokud má oprávnění ALTER FULLTEXT CATALOG.

Poznámka:

Veřejnosti je uděleno oprávnění ODKAZOVAT na výchozí stoplist, který je dodáván se SQL Serverem.

Examples

A. Nastavte ruční sledování změn

Následující příklad nastavuje ruční sledování změn na indexu plného textu v JobCandidate tabulce.

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   SET CHANGE_TRACKING MANUAL;
GO

B. Přiřaďte seznam nemovitostí s indexem v plném textu

platí pro: SQL Server 2012 (11.x) a novější verze.

Následující příklad spojuje DocumentPropertyList seznam vlastností s indexem plného textu v tabulce Production.Document . Tento příkaz ALTER FULLTEXT INDEX spouští plnou populaci, což je výchozí chování klauzule SET SEARCH PROPERTY LIST.

Poznámka:

Pro příklad, který vytváří DocumentPropertyList seznam vlastností, viz VYTVOŘIT SEZNAM VLASTNOSTÍ VYHLEDÁVÁNÍ (Transact-SQL).

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
   SET SEARCH PROPERTY LIST DocumentPropertyList;
GO

C. Odstraňte seznam vyhledávacích nemovitostí

platí pro: SQL Server 2012 (11.x) a novější verze.

Následující příklad odstraní DocumentPropertyList seznam vlastností z indexu plného textu na .Production.Document V tomto příkladu není potřeba spěchat s odstraněním vlastností z indexu, takže je uvedena možnost BEZ POPULACE. Nicméně vyhledávání na úrovni vlastností již není povoleno proti tomuto plnotextovému indexu.

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
   SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
GO

D. Založte plnou populaci

Následující příklad začíná plnou populaci na indexu plného textu v tabulce JobCandidate .

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   START FULL POPULATION;
GO

Viz také