Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Skapar ett fulltextindex i en tabell eller indexerad vy i en databas i SQL Server. Endast ett fulltextindex är tillåtet per tabell- eller indexerad vy, och varje fulltextindex gäller för en enda tabell eller indexerad vy. Ett fulltextindex kan innehålla upp till 1024 kolumner.
Transact-SQL syntaxkonventioner
Syntax
CREATE FULLTEXT INDEX ON table_name
[ ( { column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ]
[ STATISTICAL_SEMANTICS ]
} [ , ...n ]
) ]
KEY INDEX index_name
[ ON <catalog_filegroup_option> ]
[ WITH ( <with_option> [ , ...n ] ) ]
[;]
<catalog_filegroup_option>::=
{
fulltext_catalog_name
| ( fulltext_catalog_name , FILEGROUP filegroup_name )
| ( FILEGROUP filegroup_name , fulltext_catalog_name )
| ( FILEGROUP filegroup_name )
}
<with_option>::=
{
CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF [ , NO POPULATION ] }
| STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
| SEARCH PROPERTY LIST [ = ] property_list_name
}
Arguments
table_name
Namnet på tabellen eller den indexerade vyn som innehåller kolumnen eller kolumnerna som ingår i fulltextindexet.
column_name
Namnet på kolumnen ingår i fulltextindexet. Endast kolumner av typen char, varchar, nchar, nvarchar, text, ntext, image, xml och varbinary(max) kan indexeras för fulltextsökning. För att specificera flera kolumner, upprepa column_name-klausulen enligt följande:
SKAPA FULLTEXTINDEX PÅ table_name (column_name1 [...], column_name2 [...]) ...
TYPKOLUMN type_column_name
Specificerar namnet på en tabellkolumn, type_column_name, som används för att hålla dokumenttypen för ett varbinary(max) - eller bilddokument . Denna kolumn, känd som typkolumnen, innehåller en användargiven filändelse (.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(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 inget värde anges används standardspråket för SQL Server-instansen.
Om language_term anges används språket det representerar för att indexera data lagrade i kolumnerna char, nchar, varchar, nvarchar, text och ntext . Detta språk är standardspråket som används vid frågetiden om language_term inte anges som en del av ett fulltextpredikat mot kolumnen.
När den anges som en sträng motsvarar language_term aliaskolumnvärdet i sys.syslanguages systemtabellen. Strängen måste vara innesluten med enkla citationstecken, 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 följs language_term 0x 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.
Använd den lagrade sp_configure proceduren för att få tillgång till information om standardfulltextspråket i Microsoft SQL Server-instansen. För mer information, se sp_configure (Transact-SQL).
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, kan det vara lämpligt att använda den neutrala (0x0) språkresursen. Först bör du dock förstå de möjliga konsekvenserna av att använda den neutrala (0x0) språkresursen. För information om möjliga lösningar och konsekvenser av att använda den neutrala (0x0) språkresursen, se Välj ett språk när du skapar ett Full-Text index.
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 (SQL Server 2012 (11.x) och senare)
Skapar ytterligare nyckelfras- och dokumentliknande index som ingår i statistisk semantisk indexering. Mer information finns i Semantic Search (SQL Server).
NYCKELINDEX index_name
Namnet på det unika nyckelindexet på table_name. KEY INDEX måste vara en unik, enkel-nyckel, icke-nullbar kolumn. Välj det minsta unika nyckelindexet för fulltextens unika nyckel. För bästa prestanda rekommenderar vi en heltalsdatatyp för fulltextnyckeln.
fulltext_catalog_name
Fulltextkatalogen som används för fulltextindexet. Katalogen måste redan finnas i databasen. Den här satsen är valfri. Om det inte specificeras används en standardkatalog. Om ingen standardkatalog finns returnerar SQL Server ett felmeddelande.
FILEGROUP-filegroup_name
Skapar det specificerade fulltextindexet på den angivna filgruppen. Filgruppen måste redan finnas. Om FILEGROUP-klausulen inte är specificerad placeras fulltextindexet i samma filgrupp som bastabellen eller vyn för en icke-partitionerad tabell, eller i primärfilgruppen för en partitionerad tabell.
CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF [ , INGEN BEFOLKNING ] }
Specificerar om ändringar (uppdateringar, borttagningar eller insättningar) gjorda i tabellkolumner som täcks av fulltextindexet ska 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 måste 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.
OFF [ , INGEN BEFOLKNING ]
Specificerar att SQL Server inte håller en lista över ändringar i den indexerade datan. När INGEN POPULATION inte specificeras, fyller SQL Server i indexet fullt ut efter att det har skapats.
Alternativet INGEN BEFOLKNING kan endast användas när CHANGE_TRACKING är AVSTÄNGT. När INGEN POPULATION anges fyller SQL Server inte i ett index efter att det har skapats. Indexet fylls endast i efter att användaren kör ALTER FULLTEXT INDEX kommandot med klausulen START FULL POPULATION eller START INCREMENTAL POPULATION.
STOPPLISTA [ = ] { AV | SYSTEM | stoplist_name }
Kopplar en fulltextstopplista till indexet. Indexet fylls inte med några tokens som ingår i den angivna stopplistan. Om STOPLIST inte är specificerad, associerar SQL Server systemets fulltext-stoplist med indexet.
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.
SÖK I EGENDOMSLISTA [ = ] property_list_name
Gäller för: SQL Server (SQL Server 2012 (11.x) och senare)
Kopplar en sökegendomslista till indexet.
AV
Specificerar att ingen egenskapslista är kopplad till fulltextindexet.
property_list_name
Specificerar namnet på sökobjektslistan som ska associeras med fulltextindexet.
Anmärkningar
På 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.
CREATE 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.
| Change Tracking | UTAN BEFOLKNING | Result |
|---|---|---|
| Inte aktivt | Har inte angetts | En fullständig population utförs på indexet. |
| Inte aktivt | 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.
Permissions
Användaren måste ha REFERENCES behörighet på fulltextkatalogen och ha ALTER behörighet på tabellen eller den indexerade vyn, eller vara medlem i den sysadmin fasta serverrollen, eller db_owner, eller db_ddladmin fasta databasroller.
Om SET STOPLIST anges måste användaren ha REFERENS-behörighet på den angivna stopplistan. Ägaren av STOPLIST kan ge detta tillstånd.
Anmärkning
Allmänheten får REFERENS-behörighet till standardstopplistan som levereras med SQL Server.
Examples
A. Skapa ett unikt index, en fulltextkatalog och ett fulltextindex
Följande exempel skapar ett unikt index i JobCandidateID kolumnen i HumanResources.JobCandidate tabellen i AdventureWorks2025:s exempeldatabas. Exemplet skapar sedan en standard fulltextkatalog, ft. Slutligen skapar exemplet ett fulltextindex på kolumnen Resume , med hjälp av ft katalogen och systemets stopplista.
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 STOPLIST = SYSTEM;
GO
B. Skapa ett fulltextindex på flera tabellkolumner
I följande exempel skapas en fulltextkatalog, production_catalog, i AdventureWorks exempeldatabas. Exemplet skapar sedan ett fulltextindex som använder den nya katalogen. Fulltextindexet finns i kolumnerna ReviewerName, EmailAddress, och Comments i Production.ProductReview. För varje kolumn specificerar exemplet LCID för engelska, 1033, vilket är språket för data i kolumnerna. Detta fulltextindex använder ett befintligt unikt nyckelindex, PK_ProductReview_ProductReviewID. Som rekommenderat finns denna indexnyckel på en heltalskolumn, ProductReviewID.
CREATE FULLTEXT CATALOG production_catalog;
GO
CREATE FULLTEXT INDEX ON Production.ProductReview (
ReviewerName LANGUAGE 1033,
EmailAddress LANGUAGE 1033,
Comments LANGUAGE 1033
) KEY INDEX PK_ProductReview_ProductReviewID ON production_catalog;
GO
C. Skapa ett fulltextindex med en sökegenskapslista utan att fylla i den
Följande exempel skapar ett fulltextindex på Titletabellens , DocumentSummary, och Document kolumner Production.Document . Exemplet specificerar LCID för engelska, 1033, vilket är språket för data i kolumnerna. Detta fulltextindex använder standardkatalogen för fulltext och ett befintligt unikt nyckelindex, PK_Document_DocumentID. Som rekommenderat finns denna indexnyckel på en heltalskolumn, DocumentID.
Exemplet specificerar SYSTEM-stopplistan. Den specificerar också en sökrättslista, DocumentPropertyList; för ett exempel som skapar denna egenskapslista, se SKAPA SÖK-EGENSKAPSLISTA (Transact-SQL).
Exemplet specificerar att förändringsspårningen är fel utan population. Senare, under lågtrafiktid, använder exemplet ett ALTER FULLTEXT INDEX-uttalande för att starta en fullständig population på det nya indexet och aktivera automatisk ändringsspårning.
CREATE FULLTEXT INDEX ON Production.Document (
Title LANGUAGE 1033,
DocumentSummary LANGUAGE 1033,
Document TYPE COLUMN FileExtension LANGUAGE 1033
) KEY INDEX PK_Document_DocumentID
WITH STOPLIST = SYSTEM,
SEARCH PROPERTY LIST = DocumentPropertyList,
CHANGE_TRACKING OFF,
NO POPULATION;
GO
Senare, vid en låg belastning, fylls indexet i:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO;
GO