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
Mění vlastnosti plnotextového indexu v SQL Serveru.
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í
Na je vytvořen plnotextový index s
table_1vyhledávacím seznamemspl_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;Na indexu plného textu se provádí celá populace:
ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;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í
Na je vytvořen plnotextový index s
table_1vyhledá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;Seznam vlastností vyhledávání je vypnutý, následovně:
ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;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