Fyll i Full-Text index
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Att skapa och underhålla ett fulltextindex innebär att indexet fylls i med hjälp av en process som kallas population (även kallat en crawlning).
Typer av population
Ett fulltextindex stöder följande typer av populationer:
- fullständig populationen
- Automatisk eller manuell population baserat på ändringsspårning
- Inkrementell population baserat på en tidsstämpel
Hela populationen
Under en fullständig population skapas indexposter för alla rader i en tabell eller indexerad vy. En fullständig population av ett fulltextindex skapar indexposter för alla rader i bastabellen eller den indexerade vyn.
Som standard fyller SQL Server i ett nytt fulltextindex helt så snart det har skapats.
- Å ena sidan kan en full befolkning förbruka en betydande mängd resurser. När du skapar ett fulltextindex under perioder med hög belastning är det därför ofta en bra idé att fördröja hela populationen till en låg belastning, särskilt om bastabellen för ett fulltextindex är stor.
- Å andra sidan går det inte att använda den fulltextkatalog som indexet tillhör förrän alla dess fulltextindex har fyllts i.
Om du vill skapa ett fulltextindex utan att fylla i det omedelbart anger du CHANGE_TRACKING OFF, NO POPULATION
-satsen i CREATE FULLTEXT INDEX
-instruktionen. Om du anger CHANGE_TRACKING MANUAL
fyller inte Full-Text Engine i det nya fulltextindexet förrän du kör en ALTER FULLTEXT INDEX
-instruktion med satsen START FULL POPULATION
eller START INCREMENTAL POPULATION
.
Exempel – Skapa ett fulltextindex utan att köra en fullständig population
I följande exempel skapas ett fulltextindex i Production.Document
-tabellen i AdventureWorks
exempeldatabas. I det här exemplet används WITH CHANGE_TRACKING OFF, NO POPULATION
för att fördröja den första fullständiga populationen.
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
Exempel – Kör en fullständig population i en tabell
I följande exempel körs en fullständig population i tabellen Production.Document
i AdventureWorks
exempeldatabas.
ALTER FULLTEXT INDEX ON Production.Document
START FULL POPULATION;
Befolkning baserat på ändringsspårning
Du kan också använda ändringsspårning för att upprätthålla ett fulltextindex efter den första fullständiga populationen. Det finns en liten omkostnad som är associerad med ändringsspårning eftersom SQL Server har en tabell där den spårar ändringar i bastabellen sedan den senaste populationen. När du använder ändringsspårning underhåller SQL Server ett register över raderna i bastabellen eller den indexerade vyn som har modifierats av uppdateringar, borttagningar eller insättningar. Dataändringar som görs via WRITETEXT och UPDATETEXT återspeglas inte i fulltextindexet och hämtas inte med ändringsspårning.
Notera
För tabeller som innehåller en tidsstämpel kolumn kan du använda inkrementell population i stället för ändringsspårning.
När du aktiverar ändringsspårning när index skapas fyller SQL Server fullständigt i det nya fulltextindexet direkt efter att det har skapats. Därefter spåras och sprids ändringarna till fulltextindexet.
Aktivera ändringsspårning
Det finns två typer av ändringsspårning:
- Automatisk (
CHANGE_TRACKING AUTO
alternativ). Automatisk ändringsspårning är standardbeteendet. - Manuell (alternativ
CHANGE_TRACKING MANUAL
).
Typen av ändringsspårning avgör hur fulltextindexet fylls i på följande sätt:
Automatisk befolkning
Som standard eller om du anger
CHANGE_TRACKING AUTO
använder Full-Text Engine automatisk population i fulltextindexet. När den första fullständiga populationen har slutförts spåras ändringarna när data ändras i bastabellen och de spårade ändringarna sprids automatiskt. Fulltextindexet uppdateras dock i bakgrunden, så spridningsändringar kanske inte återspeglas omedelbart i indexet.För att börja spåra ändringar med automatisk befolkning
SKAPA FULLTEXTINDEX ... MED CHANGE_TRACKING AUTO
ÄNDRA FULLTEXT INDEX ... ANGE CHANGE_TRACKING AUTO
Exempel – Ändra ett fulltextindex om du vill använda automatisk ändringsspårning
I följande exempel ändras fulltextindexet förHumanResources.JobCandidate
-tabellen iAdventureWorks
-exempeldatabasen för att använda ändringsspårning med automatisk population.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO; GO
Manuell befolkningsberäkning
Om du anger CHANGE_TRACKING MANUELL använder Full-Text Engine manuell population i fulltextindexet. När den första fullständiga populationen har slutförts spåras ändringarna när data ändras i bastabellen. De sprids dock inte till fulltextindexet förrän du kör ett ALTER FULLTEXT INDEX ... START UPDATE POPULATION-instruktion. Du kan använda SQL Server Agent för att anropa den här Transact-SQL-instruktionen med jämna mellanrum.
För att börja spåra ändringar med manuell population
SKAPA FULLTEXTINDEX ... MED ÄNDRINGSSPÅRNING MANUELL
ÄNDRA FULLTEXTINDEX ... ANGE CHANGE_TRACKING MANUELL
exempel – Skapa ett fulltextindex med manuell ändringsspårning
I följande exempel skapas ett fulltextindex som använder ändringsspårning med manuell population i tabellenHumanResources.JobCandidate
iAdventureWorks
exempeldatabas.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
Exempel - Kör en manuell population
I följande exempel körs en manuell population på det ändringsspårade fulltextindexet förHumanResources.JobCandidate
-tabellen iAdventureWorks
-exempeldatabasen.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; GO
Inaktivera ändringsspårning
SKAPA FULLTEXT INDEX ... MED CHANGE_TRACKING AVSTÄNGD
ÄNDRA FULLTEXT INDEX ... INAKTIVERA ÄNDRINGSSPÅRNING
Inkrementell population baserat på en tidsstämpel
En inkrementell population är en alternativ mekanism för att manuellt fylla i ett fulltextindex. Om en tabell har en hög mängd infogningar kan det vara effektivare att använda inkrementell population än att använda manuell population.
Du kan köra en inkrementell population för ett fulltextindex som har CHANGE_TRACKING inställt på MANUELL eller AV.
Kravet för inkrementell population är att den indexerade tabellen måste ha en kolumn med tidsstämpel datatyp. Om en tidsstämpelkolumn inte finns, kan inkrementell population inte utföras.
SQL Server använder tidsstämpel kolumn för att identifiera rader som har ändrats sedan den senaste populationen. Den inkrementella populationen uppdaterar sedan fulltextindexet för rader som lagts till, tagits bort eller ändrats efter den senaste populationen, eller medan den senaste populationen pågick. I slutet av en population registrerar Full-Text Engine ett nytt tidsstämpelvärde. Det här värdet är det största tidsstämpeln värde som SQL Gatherer har hittat. Det här värdet används när nästa inkrementella population startar.
I vissa fall resulterar begäran om en inkrementell population i en fullständig population.
- En begäran om inkrementell population i en tabell utan tidsstämpel kolumn resulterar i en fullständig befolkningsåtgärd.
- Om den första populationen i ett fulltextindex är en inkrementell population indexerar den alla rader, vilket gör den likvärdig med en fullständig population.
- Om metadata som påverkar fulltextindexet för tabellen har ändrats sedan den senaste populationen implementeras inkrementella populationsbegäranden som fullständiga populationer. Detta inkluderar metadataändringar som orsakas av att ändra kolumn-, index- eller fulltextindexdefinitioner.
Utföra en gradvis uppdatering
Om du vill köra en inkrementell population kör du en ALTER FULLTEXT INDEX
-instruktion med hjälp av satsen START INCREMENTAL POPULATION
.
Skapa eller ändra ett schema för inkrementell population
Expandera servern i Object Explorer i Management Studio.
Expandera Databaseroch expandera sedan databasen som innehåller fulltextindexet.
Expandera tabeller .
Högerklicka på tabellen där fulltextindexet definieras, välj Full-Text indexoch klicka på Egenskaperpå snabbmenyn Full-Text index. Då öppnas dialogrutan egenskaper för fulltextindex.
Viktig
Om en bas tabell eller vy inte innehåller en kolumn av datatypen tidsstämpel, är inkrementell population inte möjlig.
I fönstret Välj en sida väljer du Scheman.
Använd den här sidan om du vill skapa eller hantera scheman för ett SQL Server Agent-jobb som startar en inkrementell tabellpopulation i bastabellen eller den indexerade vyn för fulltextindexet.
Alternativen är följande:
Om du vill skapa ett nytt schema klickar du på Ny.
Då öppnas dialogrutan New Full-Text Indexing Table Schedule, där du kan skapa ett schema. Om du vill spara schemat klickar du på OK.
Viktig
Ett SQL Server-agentjobb (Starta inkrementell tabellpopulation på database_name.table_name) associeras med ett nytt schema när du har avslutat dialogrutan Full-Text Indexegenskaper. Om du skapar flera scheman för samma fulltextindex använder alla samma jobb.
Om du vill ändra ett befintligt schema väljer du det befintliga schemat och klickar på Redigera.
Då öppnas dialogrutan New Full-Text Indexing Table Schedule, där du kan ändra schemat.
Not
Information om hur du ändrar ett SQL Server Agent-jobb finns i Ändra ett jobb.
Om du vill ta bort ett befintligt schema väljer du det befintliga schemat och klickar på Ta bort.
Välj OK.
Felsöka fel i en fulltextindexering (genomsökning)
När ett fel inträffar under en krypning skapar och underhåller Full-Text sökkrypningsloggning en krypningslogg, som är en oformaterad textfil. Varje crawlningslogg motsvarar en viss fulltextkatalog. Som standard finns crawlloggar för en viss instans (i det här exemplet standardinstansen) i %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG
mapp.
Crawlningsloggfilen följer följande namngivningsschema:
SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]
Variabeldelarna i crawlningsloggfilens namn är följande.
- < DatabaseID> – ID för en databas. < dbid> är ett femsiffrigt tal med inledande nollor.
- < FullTextCatalogID> – katalog-ID för fulltext. < catid> är ett femsiffrigt tal med inledande nollor.
- < n> – Är ett heltal som anger att det finns en eller flera crawlningsloggar i samma fulltextkatalog.
Till exempel är SQLFT0000500008.2
crawlningsloggfilen för en databas med databas-ID = 5 och fulltextkatalog-ID = 8. 2 i slutet av filnamnet anger att det finns två crawlningsloggfiler för det här databas-/katalogparet.
Se även
sys.dm_fts_index_population (Transact-SQL)
Kom igång med Full-Text Search
Skapa och hantera Full-Text index
SKAPA FULLTEXTINDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)