Naplnění indexů Full-Text
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Vytvoření a údržba fulltextového indexu zahrnuje naplnění indexu pomocí procesu označovaného jako populace (také známého jako procházení).
Druhy populace
Fulltextový index podporuje následující typy zpracování:
- úplná populace
- Automatické nebo ruční vyplňování na základě sledování změn
- Populace přirůstající na základě časového razítka
Úplná populace
Během úplného naplnění se vytvářejí položky indexu pro všechny řádky tabulky nebo indexované zobrazení. Úplný základní soubor fulltextového indexu vytvoří položky indexu pro všechny řádky základní tabulky nebo indexovaného zobrazení.
Sql Server ve výchozím nastavení plně naplní nový fulltextový index, jakmile se vytvoří.
- Na jedné straně může celá populace spotřebovávat značné množství prostředků. Proto při vytváření fulltextového indexu během období špičky je často osvědčeným postupem zpozdit celý základní soubor do doby mimo špičku, zejména pokud je základní tabulka fulltextového indexu velká.
- Naproti tomu fulltextový katalog, do kterého index patří, není použitelný, dokud se nenaplní všechny jeho fulltextové indexy.
Pokud chcete vytvořit fulltextový index bez okamžitého naplnění, zadejte v příkazu CREATE FULLTEXT INDEX
klauzuli CHANGE_TRACKING OFF, NO POPULATION
. Pokud zadáte CHANGE_TRACKING MANUAL
, modul Full-Text nenaplní nový fulltextový index, dokud nespustíte příkaz ALTER FULLTEXT INDEX
pomocí klauzule START FULL POPULATION
nebo START INCREMENTAL POPULATION
.
Příklad – Vytvoření fulltextového indexu bez spuštění celé populace
Následující příklad vytvoří fulltextový index v tabulce Production.Document
ukázkové databáze AdventureWorks
. Tento příklad používá WITH CHANGE_TRACKING OFF, NO POPULATION
ke zpoždění počáteční plné populace.
CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);
CREATE FULLTEXT CATALOG AW_Production_FTCat;
CREATE FULLTEXT INDEX ON Production.Document
(
Document --Full-text index column name
TYPE COLUMN FileExtension --Name of column that contains file type information
Language 1033 --1033 is LCID for the English language
)
KEY INDEX ui_ukDoc
ON AW_Production_FTCat
WITH CHANGE_TRACKING OFF, NO POPULATION;
GO
Příklad – Spuštění úplného základního souboru v tabulce
Následující příklad spustí úplnou populaci v tabulce Production.Document
ukázkové databáze AdventureWorks
.
ALTER FULLTEXT INDEX ON Production.Document
START FULL POPULATION;
Populace založená na sledování změn
Volitelně můžete použít sledování změn k udržování fulltextového indexu po jeho počátečním úplném zaplnění. Sledování změn je spojeno s malou režií, protože SQL Server udržuje tabulku, ve které sleduje změny základní tabulky od poslední synchronizace. Když používáte sledování změn, SQL Server udržuje záznam řádků v základní tabulce nebo indexované zobrazení, které byly upraveny aktualizacemi, odstraněními nebo vloženími. Změny dat provedené prostřednictvím FUNKCE WRITETEXT a UPDATETEXT se neprojeví v fulltextovém indexu a nesledují se sledováním změn.
Poznámka
U tabulek obsahujících časové razítko sloupci můžete místo sledování změn použít přírůstkovou populaci.
Když povolíte sledování změn během vytváření indexu, SQL Server plně naplní nový fulltextový index ihned po jeho vytvoření. Následně se změny sledují a šíří do fulltextového indexu.
Povolení sledování změn
Existují dva typy sledování změn:
- Automatický (volba
CHANGE_TRACKING AUTO
). Automatické sledování změn je výchozí chování. - Ručně ( možnost
CHANGE_TRACKING MANUAL
).
Typ sledování změn určuje, jak se fulltextový index naplní následujícím způsobem:
Automatické vyplňování
Ve výchozím nastavení nebo pokud zadáte
CHANGE_TRACKING AUTO
, modul Full-Text používá v fulltextovém indexu automatickou populaci. Po dokončení počátečního úplného základního souboru se změny sledují, jakmile se data upraví v základní tabulce a sledované změny se automaticky rozšíří. Fulltextový index se aktualizuje na pozadí, takže se přenesené změny nemusí v indexu projevit okamžitě.Zahájení sledování změn pomocí automatického populace
VYTVOŘIT FULLTEXTOVÝ INDEX ... S AUTOMATICKÝM SLEDOVÁNÍM ZMĚN
ALTER FULLTEXT INDEX ... NASTAVIT CHANGE_TRACKING AUTO
příklad – Změna fulltextového indexu tak, aby používala automatické sledování změn
Následující příklad změní fulltextový indexHumanResources.JobCandidate
tabulkyAdventureWorks
ukázkové databáze tak, aby používal sledování změn s automatickým počtem obyvatel.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO; GO
ruční zadávání
Pokud zadáte CHANGE_TRACKING MANUAL, modul Full-Text používá ruční aktualizaci fulltextového indexu. Po dokončení počátečního úplného základního souboru se změny sledují, protože se v základní tabulce mění data. Nejsou však šířené do fulltextového indexu, dokud nespustíte ALTER FULLTEXT INDEX ... START UPDATE POPULATION – příkaz. Agenta SQL Serveru můžete použít k pravidelnému volání tohoto příkazu Transact-SQL.
Zahájení sledování změn ručním zadáváním
VYTVOŘIT FULLTEXTOVÝ INDEX ... S RUČNÍM SLEDOVÁNÍM ZMĚN
ZMĚNIT FULLTEXTOVÝ INDEX ... NASTAVIT SLEDOVÁNÍ ZMĚN MANUÁLNĚ
příklad – Vytvoření fulltextového indexu s ručním sledováním změn
Následující příklad vytvoří fulltextový index, který bude používat sledování změn s ručním počtem obyvatel vHumanResources.JobCandidate
tabulceAdventureWorks
ukázkové databáze.USE AdventureWorks; GO CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID); CREATE FULLTEXT CATALOG ft AS DEFAULT; CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand WITH CHANGE_TRACKING=MANUAL; GO
příklad – spuštění manuálního plnění
Následující příklad spustí ruční naplnění fulltextového indexu sledovaného změnami v tabulceHumanResources.JobCandidate
ukázkové databázeAdventureWorks
.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; GO
Zakázání sledování změn
VYTVOŘIT FULLTEXT INDEX ... S VYPNUTÝM CHANGE_TRACKING
ALTER FULLTEXT INDEX ... NASTAVIT SLEDOVÁNÍ_ZMĚN VYPNUTO
Přírůstková populace založená na časovém razítku
Přírůstková populace je alternativní mechanismus ručního naplnění fulltextového indexu. Pokud u tabulky dochází k velkému objemu vkládání, může být použití přírůstkového načítání efektivnější než použití ručního načítání.
Přírůstkovou populaci můžete spustit pro fulltextový index, který má nastavení SLEDOVÁNÍ_ZMĚN na RUČNÍ nebo VYPNUTO.
Požadavek na přírůstkovou populaci spočívá v tom, že indexovaná tabulka musí mít sloupec časového razítka datového typu. Pokud neexistuje sloupec s časovým razítkem , není možné provést inkrementální aktualizaci.
SQL Server používá časové razítko sloupec k identifikaci řádků, které se změnily od posledního základního souboru. Přírůstková populace pak aktualizuje fulltextový index pro řádky přidané, odstraněné nebo upravené po poslední populaci nebo během poslední populace. Na konci populace Full-Text Motor zaznamenává novou hodnotu časového razítka. Tato hodnota je největší časová razítka hodnota, kterou modul SQL pro shromažďování dat našel. Tato hodnota se použije při spuštění dalšího přírůstkového souboru.
V některých případech má požadavek na přírůstkovou populaci za následek úplnou populaci.
- Žádost o přírůstkové naplnění tabulky bez sloupce s časovým razítkem způsobí úplné naplnění.
- Pokud je první základní soubor v fulltextovém indexu přírůstkový základní soubor, indexuje všechny řádky, takže je ekvivalentní úplnému souboru.
- Pokud se od posledního plného indexování změnila nějaká metadata, která ovlivňují fulltextový index tabulky, provádějí se přírůstkové aktualizace jako plná indexování. To zahrnuje změny metadat způsobené změnou libovolného sloupce, indexu nebo definice fulltextového indexu.
Spusťte přírůstkové naplnění dat
Pokud chcete spustit přírůstkovou populaci, spusťte příkaz ALTER FULLTEXT INDEX
pomocí klauzule START INCREMENTAL POPULATION
.
Vytvoření nebo změna plánu pro přírůstkovou populaci
V sadě Management Studio v Průzkumníku objektů rozbalte server.
Rozbalte Databázea potom rozbalte databázi, která obsahuje fulltextový index.
Rozbalte tabulky.
Pravým tlačítkem myši klikněte na tabulku s definovaným fulltextovým indexem, vyberte Full-Text indexa v kontextové nabídce Full-Text indexu klikněte na Vlastnosti. Otevře se dialogové okno Vlastnosti indexu úplného textu.
Důležitý
Pokud základní tabulka nebo zobrazení neobsahuje sloupec časového razítka datového typu, přírůstková populace není možná.
V podokně Vybrat stránku vyberte 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 tabulku základní tabulky nebo indexované zobrazení fulltextového indexu.
Možnosti jsou následující:
Chcete-li vytvořit nový plán, klepněte na tlačítko Nový.
Otevře se dialogové okno Nový Full-Text Rozvrh indexování tabulky, kde můžete vytvořit rozvrh. Chcete-li uložit plán, klepněte na tlačítko OK.
Důležitý
Úloha agenta SQL Serveru (Spuštění přírůstkového naplnění tabulky na database_name.table_name) je přidružena k novému plánu po uzavření dialogového okna Full-Text Vlastnosti indexu. Pokud pro stejný fulltextový index vytvoříte více plánů, budou všechny používat stejnou úlohu.
Chcete-li změnit existující plán, vyberte existující plán a klikněte na Upravit.
Otevře se dialogové okno Nový Full-Text Plán indexování tabulky, kde můžete plán upravit.
Poznámka
Informace o úpravě úlohy agenta SYSTÉMU SQL Server naleznete v tématu Úprava úlohy.
Chcete-li odebrat existující plán, vyberte existující plán a klikněte na Odstranit.
Vyberte OK.
Řešení problémů při celotextové indexaci (procházení)
Když během procházení dojde k chybě, zařízení Full-Text pro protokolování procházení prohledávání vytvoří a udržuje protokol procházení, což je soubor ve formátu prostého textu. Každý protokol procházení odpovídá určitému fulltextovému katalogu. Ve výchozím nastavení se protokoly procházení pro danou instanci (v tomto příkladu výchozí instance) nacházejí ve složce %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG
.
Protokolový soubor procházení má následující schéma pojmenování:
SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]
Proměnné části názvu souboru protokolu procházení jsou následující.
- < ID databáze> – ID databáze. < dbid> je pěticiferné číslo s počátečními nulami.
- < FullTextCatalogID> – ID fulltextového katalogu. < catid> je pěticiferné číslo s počátečními nulami.
- < n> – je celé číslo, které označuje jeden nebo více protokolů procházení stejného fulltextového katalogu.
Například SQLFT0000500008.2
je soubor protokolu procházení databáze s ID databáze = 5 a ID fulltextového katalogu = 8. Hodnota 2 na konci názvu souboru označuje, že pro tuto dvojici databáze nebo katalogu existují dva soubory protokolu procházení.
Viz také
sys.dm_fts_index_population (Transact-SQL)
Začínáme s Full-Text vyhledáváním
vytváření a správa indexů Full-Text
CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)