ALTER FULLTEXT INDEX (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Ändrar egenskaperna hos ett fulltextindex i SQL Server.

Transact-SQL syntaxkonventioner

Syntax

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

Namnet på tabellen eller den indexerade vyn som innehåller kolumnen eller kolumnerna som ingår i fulltextindexet. Att ange databas- och tabellägarnamn är valfritt.

AKTIVERA | INAKTIVERA

Talar om för SQL Server om fulltextindexdata ska samlas in för table_name. ENABLE aktiverar fulltextindexet; DISABLE stänger av fulltextindexet. Tabellen stöder inte fulltextfrågor medan indexet är inaktiverat.

Att inaktivera ett fulltextindex låter dig stänga av ändringsspårning men behålla fulltextindexet, som du kan aktivera när som helst med ENABLE. När fulltextindexet inaktiveras finns fulltextindexets metadata kvar i systemtabellerna. Om CHANGE_TRACKING är i aktiverat tillstånd (automatisk eller manuell uppdatering) när fulltextindexet är inaktiverat, fryser indexets tillstånd, all pågående crawl upphör och nya ändringar i tabelldata spåras eller sprids inte till indexet.

STÄLL CHANGE_TRACKING { MANUAL | AUTO | FEL }

Specificerar om ändringar (uppdateringar, borttagningar eller insättningar) gjorda i tabellkolumner som täcks av fulltextindexet kommer att spridas av SQL Server till fulltextindexet. Dataändringar via WRITETEXT och UPDATETEXT återspeglas inte i fulltextindexet och plockas inte upp med ändringsspårning.

  • HANDBOK

    Specificerar att de spårade ändringarna propageras manuellt genom att anropa ALTER FULLTEXT INDEX ... STARTA UPPDATERA POPULATIONEN Transact-SQL uttalandet (manuell population). Du kan använda SQL Server Agent för att anropa den här Transact-SQL-instruktionen med jämna mellanrum.

  • AUTO

    Specificerar att de spårade ändringarna sprids automatiskt när data ändras i bastabellen (automatisk population). Även om ändringar sprids automatiskt, kan dessa förändringar inte återspeglas omedelbart i fulltextindexet. AUTO är standard.

  • AV

    Specificerar att SQL Server inte håller en lista över ändringar i den indexerade datan.

LÄGG | SLÄPP column_name

Specificerar vilka kolumner som ska läggas till eller tas bort från ett fulltextindex. Kolumnen eller kolumnerna måste vara av typen char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary eller varbinary(max).

Använd DROP-klausulen endast på kolumner som tidigare har aktiverats för fulltextindexering.

Använd TYPE COLUMN och LANGUAGE med ADD-klausulen för att sätta dessa egenskaper på column_name. När en kolumn läggs till måste fulltextindexet i tabellen fyllas på nytt för att fulltextfrågor mot denna kolumn ska fungera.

Anmärkning

Om fulltextindexet fylls i efter att en kolumn lagts till eller tas bort från ett fulltextindex beror på om ändringsspårning är aktiverad och om UTAN POPULATION specificeras. För mer information, se Interaktioner av förändringsspårning och INGEN POPULATIONSPARAMETER.

TYPKOLUMN type_column_name

Specificerar namnet på en tabellkolumn, type_column_name, som används för att hålla dokumenttypen för ett varbinärt,varbinärt(max)- eller bilddokument . Denna kolumn, känd som typkolumnen, innehåller en användarangen filtillägg (.doc, .pdf, .xls, och så vidare). Typkolumnen måste vara av typen char, nchar, varchar eller nvarchar.

Ange TYP COLUMN type_column_name endast om column_name anger en varbinär, varbinär(max) eller bildkolumn , där data lagras som binär data; annars ger SQL Server ett felmeddelande.

Anmärkning

Vid indexeringstillfället använder Full-Text Engine förkortningen i typkolumnen i varje tabellrad för att identifiera vilket fulltextsökfilter som ska användas för dokumentet i column_name. Filtret laddar dokumentet som en binär ström, tar bort formateringsinformationen och skickar texten från dokumentet till ordbrytarkomponenten. Mer information finns i Konfigurera och hantera filter för sökning.

SPRÅK language_term

Språket för de data som lagras i column_name.

language_term är valfritt och kan specificeras som en sträng, ett heltal eller ett hexadecimalt värde som motsvarar språkets lokalidentifierare (LCID). Om language_term anges tillämpas det språk som det representerar på alla element i sökvillkoret. Om inget värde anges används SQL Server-instansens standard fulltextspråk.

Använd den lagrade sp_configure proceduren för att komma åt information om SQL Server-instansens standard fulltextspråk.

När den anges som en sträng motsvarar alias language_term kolumnvärdet i sys.syslanguages systemtabellen. Strängen måste omges av enkla citattecken, som i "language_term". När det anges som ett heltal är language_term den faktiska LCID som identifierar språket. När det anges som ett hexadecimalt värde är language_term 0x följt av hexadecimalt värde för LCID. Hexvärdet får inte överstiga åtta siffror, inklusive inledande nollor.

Om värdet är i DBCS-format (double-byte character set) konverterar SQL Server det till Unicode.

Resurser, såsom ordbrytare och stämmare, måste aktiveras för det språk som anges som language_term. Om sådana resurser inte stödjer det angivna språket ger SQL Server ett felmeddelande.

För icke-BLOB- och icke-XML-kolumner som innehåller textdata på flera språk, eller för fall där språket för texten som lagras i kolumnen är okänt, använd den neutrala (0x0) språkresursen. För dokument som lagras i XML- eller BLOB-typ kolumner används språkkodningen i dokumentet vid indexering. Till exempel, i XML-kolumner identifierar xml:lang attributet i XML-dokument språket. Vid frågetillfället blir det värde som tidigare specificerats i language_term standardspråket för fulltextfrågor om inte language_term anges som en del av en fulltextfråga.

STATISTICAL_SEMANTICS

gäller för: SQL Server 2012 (11.x) och senare versioner.

Skapar ytterligare nyckelfras- och dokumentliknande index som ingår i statistisk semantisk indexering. Mer information finns i Semantic Search (SQL Server).

[ , ... n ]

Indikerar att flera kolumner kan specificeras för ADD-, ALTER- eller DROP-klausulerna. När flera kolumner är specificerade, separera dessa med kommatecken.

UTAN BEFOLKNING

Specificerar att fulltextindexet inte fylls i efter en ADD eller DROP kolumnoperation eller en SET STOPLIST-operation. Indexet fylls endast om användaren utför en START... BEFOLKNINGSKOMMANDO.

När INGEN POPULATION anges fyller SQL Server inte i ett index. Indexet fylls endast i efter att användaren ger ett ALTER FULLTEXT INDEX... STARTA POPULATIONSKOMMANDOT. När INGEN POPULATION inte specificeras, fyller SQL Server i indexet.

Om CHANGE_TRACKING är aktiverat och UTAN BEFOLKNING anges ger SQL Server ett felmeddelande. Om CHANGE_TRACKING är aktiverat och UTAN POPULATION inte specificeras, utför SQL Server en fullständig population på indexet.

{LÄGG | SLÄPP } STATISTICAL_SEMANTICS

gäller för: SQL Server 2012 (11.x) och senare versioner.

Möjliggör eller inaktiverar statistisk semantisk indexering för de angivna kolumnerna. Mer information finns i Semantic Search (SQL Server).

START { FULL | INKREMENTELL | UPPDATERING } BEFOLKNING

Säger åt SQL Server att börja befolka fulltextindexet för table_name. Om en fulltextindexpopulation redan är igång, ger SQL Server en varning och startar ingen ny population.

  • FULLT

    Specificerar att varje rad i tabellen hämtas för fulltextindexering även om raderna redan har indexerats.

  • INCREMENTAL

    Specificerar att endast de modifierade raderna sedan den senaste populationen hämtas för fulltextindexering. INCREMENTAL kan endast tillämpas om tabellen har en kolumn med typen tidsstämpel. Om en tabell i fulltextkatalogen inte innehåller en kolumn med typtidsstämpeln, genomgår tabellen en FULLSTÄNDIG population.

  • UPPDATERING

    Specificerar bearbetningen av alla insättningar, uppdateringar eller raderingar sedan senaste gången ändringsindexet uppdaterades. Versionshanteringspopulationen måste vara aktiverad i en tabell, men bakgrundsuppdateringsindex eller automatisk ändringsspårning bör inte vara aktiverad.

{STOPP | PAUS | ÅTERUPPTAG } BEFOLKNING

Stoppar eller pausar en population som pågår; eller stoppar eller återupptar varje pausad population.

STOP POPULATION stoppar inte automatisk ändringsspårning eller bakgrundsuppdateringsindex. För att stoppa ändringsspårningen, använd SET CHANGE_TRACKING AV.

PAUSA POPULATION och ÅTERUPPTA POPULATION kan endast användas för hela populationer. De är inte relevanta för andra populationstyper eftersom de andra populationerna återupptar krypningar från där krypningen slutade.

STÄLL STOPPLISTA { AV | SYSTEM | stoplist_name }

Ändrar den fulltextstopplista som är kopplad till indexet, om sådan finns.

  • AV

    Specificerar att ingen stopplista är kopplad till fulltextindexet.

  • SYSTEM

    Specificerar att standardfulltextsystemet STOPLIST ska användas för detta fulltextindex.

  • stoplist_name

    Specificerar namnet på stopplistan som ska kopplas till fulltextindexet.

Mer information finns i Konfigurera och hantera stoppord och stopplistor för Full-Text Search.

STÄLL IN SÖK-EGENSKAPSLISTA { OFF | property_list_name } [ UTAN BEFOLKNING ]

gäller för: SQL Server 2012 (11.x) och senare versioner.

Ändrar sökrättslistan som är kopplad till indexet, om sådan finns.

  • AV

    Specificerar att ingen egenskapslista är kopplad till fulltextindexet. När du stänger av sökegenskapslistan för ett fulltextindex (ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF), är egenskapssökning i bastabellen inte längre möjlig.

    Som standard, när du stänger av en befintlig sökstatuslista, fylls fulltextindexet automatiskt på nytt. Om du anger UTAN BEFOLKNING när du stänger av sökobjektlistan sker ingen automatisk återbefolkning. Vi rekommenderar dock att du så småningom kör en fullständig population på detta fulltextindex när det passar dig. Att fylla på fulltextindexet tar bort egenskapsspecifik metadata för varje borttagen sökegenskap, vilket gör fulltextindexet mindre och mer effektivt.

  • property_list_name

    Specificerar namnet på sökrättslistan som ska kopplas till fulltextindexet.

    Att lägga till en sökegenskapslista i ett fulltextindex kräver att indexet fylls på nytt för att indexera de sökegenskaper som är registrerade för den tillhörande sökegenskapslistan. Om du anger UTAN BEFOLKNING när du lägger till sökens egenskapslista behöver du köra en population i indexet, vid en lämplig tidpunkt.

Viktigt!

Om fulltextindexet tidigare var kopplat till en annan sökning måste det byggas om en egenskapslista för att indexet ska bli ett konsekvent tillstånd. Indexet avkortas omedelbart och är tomt tills hela populationen är igång. För mer information, se Att ändra sökens egenskapslista orsakar att indexet byggs om.

Anmärkning

Du kan associera en given sökegenskapslista med mer än ett fulltextindex i samma databas.

Hitta sökegenskaperna i den aktuella databasen

För mer information om att söka i fastighetslistor, se Sök dokumentfastigheter med sök i fastighetslistor.

Anmärkningar

xml-kolumner kan du skapa ett fulltextindex som indexerar innehållet i XML-elementen, men ignorerar XML-markupen. Attributvärden indexeras i fulltext om de inte är numeriska värden. Elementtaggar används som tokengränser. Välformade XML- eller HTML-dokument och fragment som innehåller flera språk stöds. Mer information finns i Använda Full-Text Search med XML-kolumner.

Vi rekommenderar att kolumnen för indexnyckeln är en heltalsdatatyp. Detta ger optimeringar vid frågeexekveringstid.

ÄNDRA FULLTEXT INDEX kan inte placeras i en användartransaktion. Detta uttalande måste köras i sin egen implicita transaktion.

För mer information om fulltextindex, se Skapa och hantera Full-Text index.

Interaktioner mellan förändringsspårning och INGEN POPULATIONSPARAMETER

Om fulltextindexet fylls beror på om ändringsspårning är aktiverad och om UTAN POPULATION anges i ALTER FULLTEXT INDEX-satsen. Följande tabell sammanfattar resultatet av deras interaktion.

Spårning av ändringar UTAN BEFOLKNING Result
Inte aktiverat Har inte angetts En fullständig population utförs på indexet.
Inte aktiverat Specificerade Ingen population av indexet förekommer förrän ett ALTER FULLTEXT INDEX... START BEFOLKNINGSUTTALANDE utfärdas.
Enabled Specificerade Ett fel väcks och indexet ändras inte.
Enabled Har inte angetts En fullständig population utförs på indexet.

För mer information om hur man fyller i fulltextindex, se Fyll Full-Text index.

Att ändra sökegenskapslistan orsakar att indexet byggs om

Första gången ett fulltextindex associeras med en sökegenskapslista måste indexet fyllas på nytt för att indexera egenskapsspecifika söktermer. Den befintliga indexdatan är inte avkortad.

Men om du kopplar fulltextindexet till en annan egenskapslista byggs indexet om. Ombyggnad förkortar omedelbart fulltextindexet, tar bort all befintlig data och indexet måste fyllas på nytt. Medan populationen utvecklas söker fulltextfrågor i bastabellen endast på tabellrader som redan har indexerats av populationen. De återfyllda indexdata inkluderar metadata från de registrerade egenskaperna i den nyligen tillagda sökegenskapslistan.

Scenarier som orsakar återuppbyggnad inkluderar:

  • Byt direkt till en annan sökegenskapslista (se "Scenario A" senare i detta avsnitt).

  • Stäng av sökegenskapslistan och koppla senare indexet till någon sökegenskapslista (se "Scenario B" senare i detta avsnitt).

Anmärkning

För mer information om hur fulltextsökning fungerar med sökobjektlistor, se Sök dokumentegenskaper med sök i egenskapslistor. För information om fullständiga populationer, se Populate Full-Text Indexes.

Scenario A: Byt direkt till en annan sökegenskapslista

  1. Ett fulltextindex skapas på table_1 med en sökegenskapslista: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. En fullständig population körs på fulltextindexet:

    ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;
    
  3. Fulltextindexet associeras senare med en annan sökegenskapslista, spl_2, med följande påstående:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;
    

    Detta uttalande orsakar en hel population, vilket är standardbeteendet. Men innan denna population påbörjas, förkortar Full-Text Engine automatiskt indexet.

Scenario B: Stäng av sökegenskapslistan och koppla senare indexet till någon sökegenskapslista

  1. Ett fulltextindex skapas på table_1 med en sökegenskapslista spl_1, följt av en automatisk fullständig population (standardbeteendet):

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index
        WITH SEARCH PROPERTY LIST=spl_1;
    
  2. Sökobjektlistan är avstängd enligt följande:

    ALTER FULLTEXT INDEX ON table_1
        SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
    
  3. Fulltextindexet är återigen kopplat antingen till samma sökegenskapslista eller en annan.

    Till exempel återkopplar följande sats fulltextindexet till den ursprungliga sökegenskapslistan, spl_1:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;
    

    Detta påstående startar en hel population, standardbeteendet.

    Anmärkning

    Ombyggnaden skulle också krävas för en annan sökfastighetslista, såsom spl_2.

Permissions

Användaren måste ha ALTER-behörighet på tabellen eller indexerad vy, eller vara medlem i sysadmin-rollen för fast server, eller db_ddladmin eller db_owner fasta databasroller.

Om SET STOPLIST anges måste användaren ha REFERENSRÄTTIGHETER på stopplistan. Om SET SEARCH PROPERTY LIST är specificerad måste användaren ha REFERENS-behörighet på sökegenskapslistan. Ägaren av den angivna stopplistan eller sökegenskapslistan kan ge REFERENSER-behörighet om ägaren har behörigheter för ÄNDRA FULLTEXT CATALOG.

Anmärkning

Allmänheten får REFERENS-behörighet till standardstopplistan som levereras med SQL Server.

Examples

A. Ställ in manuell ändringsspårning

Följande exempel ställer manuell ändringsspårning på fulltextindexet i JobCandidate tabellen.

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

B. Koppla en egenskapslista till ett fulltextindex

gäller för: SQL Server 2012 (11.x) och senare versioner.

Följande exempel associerar DocumentPropertyList egenskapslistan med fulltextindexet i tabellen Production.Document . Detta ALTER FULLTEXT INDEX-uttalande startar en fullständig population, vilket är standardbeteendet för SET SEARCH PROPERTY LIST-klausulen.

Anmärkning

För ett exempel som skapar DocumentPropertyList egenskapslistan, se SKAPA SÖK EGENSKAPSLISTA (Transact-SQL).

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

C. Ta bort en söklista över egendomar

gäller för: SQL Server 2012 (11.x) och senare versioner.

Följande exempel tar bort DocumentPropertyList egenskapslistan från fulltextindexet på .Production.Document I det här exemplet är det ingen brådska att ta bort fastigheterna från indexet, så alternativet UTAN BEFOLKNING är specificerat. Dock är sökning på egenskapsnivå inte längre tillåten mot detta fulltextindex.

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

D. Starta en full population

Följande exempel startar en fullständig population på fulltextindexet i tabellen JobCandidate .

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

Se även