Kommentar
Å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
Den här artikeln beskriver hur man skapar, fyller i och hanterar fulltextindex i Databasmotor för SQL Server. Ett fulltextindex stöder sökords- och språksökning över teckenbaserade kolumner i en tabell.
Skapa en fulltextkatalog
Innan du kan skapa ett fulltextindex behöver du en fulltextkatalog. Katalogen är en virtuell container för ett eller flera fulltextindex. För mer information, se Skapa och hantera Full-Text kataloger.
Skapa, ändra eller släppa ett fulltextindex
Fylla i ett fulltextindex
Processen att skapa och underhålla ett fulltextindex kallas för en population (kallas även för en crawlning). Det finns tre typer av fulltextindexpopulation:
- Hela populationen
- Befolkning baserat på ändringsspårning
- Inkrementell population baserat på en tidsstämpel
Mer information finns i Populate Full-Text Indexes.
Visa egenskaperna för ett fulltextindex
Visa egenskaperna för ett fulltextindex med Transact-SQL
| Katalog- eller dynamisk hanteringsvy | Beskrivning |
|---|---|
| sys.fulltext_index_catalog_usages | Returnerar en rad för varje fulltextkatalog och dess fulltextindexreferens. |
| sys.fulltext_index_columns | Innehåller en rad för varje kolumn som ingår i ett fulltextindex. |
| sys.fulltext_index_fragments | Ett fulltextindex använder interna tabeller kallade fulltextindexfragment för att lagra den inverterade indexdatan. Du kan använda denna vy för att söka metadata om dessa fragment. Den här vyn innehåller en rad för varje fulltextindexfragment i varje tabell som innehåller ett fulltextindex. |
| sys.fulltext_indexes | Innehåller en rad per fulltextindex för ett tabellobjekt. |
| sys.dm_fts_index_keywords | Returnerar information om innehållet i ett fulltextindex för den angivna tabellen. |
| sys.dm_fts_index_keywords_by_document | Returnerar information om innehållet på dokumentnivå i ett fulltextindex för den angivna tabellen. Ett visst nyckelord kan visas i flera dokument. |
| sys.dm_fts_index_population | Returnerar information om populationerna av fulltextindex som för närvarande bearbetas. |
Visa egenskaperna för ett fulltextindex med SQL Server Management Studio
Observera
Om du vill visa egenskaper för fulltextindex för Azure SQL-databaser använder du Transact-SQL-.
Expandera servern i Object Explorer i SQL Server 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 välj Egenskaperpå snabbmenyn Full-Text index . Denna åtgärd öppnar dialogrutan Egenskaper för fulltextindex .
I panelen Välj en sida , välj någon av följande sidor:
Sida Beskrivning Allmänt Visar grundläggande egenskaper för fulltextindexet. Dessa egenskaper inkluderar flera modifierbara egenskaper och många oföränderliga egenskaper såsom databasnamn, tabellnamn och namnet på fulltextnyckelkolumnen. De ändringsbara egenskaperna är:
Full-Text Indexstopplista
Full-Text indexering aktiverat
ändringsspårning
Sök egenskapslistakolumner Visar de tabellkolumner som är tillgängliga för fulltextindexering. Den markerade kolumnen eller kolumnerna är fulltextindexerade. Du kan välja så många av de tillgängliga kolumnerna som du vill inkludera i fulltextindexet. Mer information finns i Populate Full-Text Indexes. 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 för fulltextindexpopulationerna. Mer information finns i Populate Full-Text Indexes.
Obs!: När du har stängt dialogrutan Full-Text Index Properties kopplas alla nyligen skapade schema till ett SQL Server Agent-jobb (Start Incremental Table Population on database_name.table_name).Välj OK om du vill spara ändringar och avsluta dialogrutan Egenskaper för fulltextindex.
Visa egenskaperna för indexerade tabeller och kolumner
Du kan använda flera Transact-SQL funktioner, såsom OBJECTPROPERTYEX, för att få värdet på olika fulltextindexeringsegenskaper. Den här informationen är användbar för att administrera och felsöka fulltextsökning.
I följande tabell visas de fulltextegenskaper som är relaterade till indexerade tabeller och kolumner och deras relaterade Transact-SQL funktioner.
| Egenskap | Beskrivning | Funktion |
|---|---|---|
| FulltexttypKolumn |
TYPE COLUMN i tabellen som innehåller dokumenttypinformationen för kolumnen. |
COLUMNPROPERTY |
| ÄrFulltextIndexerat | Specificerar om en kolumn är aktiverad för fulltextindexering. | COLUMNPROPERTY |
| IsFulltextKey | Om indexet är fulltextnyckeln för en tabell. | INDEXPROPERTY |
| TableFulltextBackgroundUpdateIndexOn | Om en tabell har fulltextbakgrundsuppdateringsindexering. | OBJEKTEGENSKAPEX |
| TableFulltextCatalogId | Fulltextkatalog-ID där fulltextindexdata för tabellen finns. | OBJECTPROPERTYEX |
| TableFulltextChangeTrackingOn | Om en tabell har fulltextändringsspårning aktiverad. | OBJECTPROPERTYEX |
| TabellFulltextDokumentBearbetad | Antal rader som bearbetats sedan fulltextindexeringen inleddes. | OBJECTPROPERTYEX |
| TableFulltextFailCount | Antalet rader Full-Text Sökningen indexerades inte. | OBJECTPROPERTYEX |
| TableFulltextItemCount | Antal rader som har indexerats i fulltext. | OBJECTPROPERTYEX |
| TableFulltextKeyColumn | Kolumn-ID för den unika nyckelkolumnen i fulltext. | OBJECTPROPERTYEX |
| TableFullTextMergeStatus | Om en tabell som har ett fulltextindex för närvarande slås samman. | OBJECTPROPERTYEX |
| TableFulltextPendingChanges | Antal väntande ändringsspårningsposter som ska bearbetas. | OBJECTPROPERTYEX |
| TableFulltextPopulateStatus | Befolkningsstatus för en fulltexttabell. | OBJECTPROPERTYEX |
| TableHasActiveFulltextIndex | Om en tabell har ett aktivt fulltextindex. | OBJECTPROPERTYEX |
Hämta information om nyckelkolumnen i fulltext
Vanligtvis sammanfogar du resultatet av CONTAINSTABLE eller FREETEXTTABLE radmängdsvärdede funktioner med bastabellen. I sådana fall måste du känna till det unika nyckelkolumnnamnet. Du kan kontrollera om ett givet unikt index används som fulltextnyckel, och du kan få identifieraren för fulltextnyckelkolumnen.
Avgöra om ett specifikt unikt index används som nyckelkolumn i fulltext
Använd en SELECT-instruktion för att anropa funktionen INDEXPROPERTY. I funktionsanropet använder OBJECT_ID du funktionen för att konvertera namnet på tabellen (table_name) till tabell-ID, ange namnet på ett unikt index för tabellen och ange IsFulltextKey-indexegenskapen , enligt följande:
SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');
Detta uttalande returnerar 1 om indexet kräver unikhet för fulltextnyckelkolumnen och 0 om det inte gör det.
Exempel
Följande exempel kontrollerar om indexet PK_Document_DocumentNode upprätthåller unikhet för fulltextnyckelkolumnen:
USE AdventureWorks2025;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');
Detta exempel ger 1 om indexet PK_Document_DocumentNode kräver unikhet för fulltextnyckelkolumnen. Annars returnerar den 0 eller NULL.
NULL betyder att du använder ett ogiltigt indexnamn, indexnamnet motsvarar inte tabellen, tabellen existerar inte, och så vidare.
Hitta identifieraren för kolumnen med fulltextnyckeln
Varje fulltextaktiverad tabell har en kolumn som upprätthåller unika rader för tabellen (den unika nyckelkolumnen). Egenskapen TableFulltextKeyColumn, som erhålls från funktionen OBJECTPROPERTYEX, innehåller kolumn-ID:t för kolumnen för den unika nyckeln.
För att få denna identifierare använder du en SELECTsats som anropar OBJECTPROPERTYEXfunktionen. Använd OBJECT_ID funktionen för att konvertera namnet på tabellen (table_name) till tabell-ID och ange TableFulltextKeyColumn egenskapen, enligt följande:
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';
Exempel
Följande exempel returnerar identifieraren för fulltextnyckelkolumnen eller NULL.
NULL antyder att du använder ett ogiltigt indexnamn, indexnamnet motsvarar inte tabellen, tabellen existerar inte, och så vidare.
USE AdventureWorks2025;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
Följande exempel visar hur man använder identifieraren för den unika nyckelkolumnen för att få namnet på kolumnen.
USE AdventureWorks2025;
GO
DECLARE @key_column AS SYSNAME;
SET @key_column = COL_NAME(
OBJECT_ID('Production.Document'),
OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);
SELECT @key_column AS 'Unique Key Column';
GO
Det här exemplet returnerar en resultatuppsättningskolumn med namnet Unique Key Column, som visar en enskild rad som innehåller namnet på den unika nyckelkolumnen i dokumenttabellen DocumentNode. Om denna fråga innehöll ett ogiltigt indexnamn, indexnamnet inte motsvarade tabellen, tabellen existerade inte, och så vidare, returnerar NULLden .
Index varbinary(max) och XML-kolumner
Om du indexerar en varbinär(max)-, varbinär- eller xml-kolumn kan du fråga den genom att använda fulltextpredikaten (CONTAINS och FREETEXT) och funktionerna (CONTAINSTABLE och FREETEXTTABLE), precis som vilken annan fulltextindexerad kolumn som helst.
Index varbinary(max) eller varbinary-data
En enda varbinary(max) eller varbinary kolumn kan lagra många typer av dokument. Database Engine stöder alla dokumenttyper för vilka ett filter är installerat och tillgängligt i operativsystemet. Dokumenttypen för varje dokument identifieras av filnamnstillägget för dokumentet. Till exempel, för en .doc filändelse använder fulltextsökning filtret som stöder Microsoft Word-dokument. En lista över tillgängliga dokumenttyper finns i sys.fulltext_document_types katalogvyn.
Full-Text Engine kan använda befintliga filter som är installerade i operativsystemet. Innan du kan använda operativsystemfilter, ordbrytare och stemmers måste du läsa in dem i serverinstansen enligt följande:
EXECUTE sp_fulltext_service
@action = 'load_os_resources',
@value = 1;
För att skapa ett fulltextindex på en varbinary(max) kolumn behöver Full-Text Engine åtkomst till filnamnstilläggen för dokumenten i kolumnen varbinary(max). Du måste lagra denna information i en tabellkolumn, kallad typkolumn, som du associerar med varbinary(max) -kolumnen i fulltextindexet. När du indexerar ett dokument använder Full-Text Engine filtillägget i typkolumnen för att identifiera vilket filter som ska användas.
Index-XML-data
En XML- datatypskolumn lagrar endast XML-dokument och fragment, och endast XML-filtret används för dokumenten. Därför är en typkolumn onödig. På XML- kolumner indexerar fulltextindexet innehållet i XML-elementen, men ignorerar XML-markering. Attributvärden indexeras i fulltext om de inte är numeriska värden. Elementtaggar används som tokengränser. Välformulerade XML- eller HTML-dokument och fragment som innehåller flera språk stöds.
För mer information om indexering och sökningar på en xml-kolumn , se Använd fulltextsökning med XML-kolumner.
Inaktivera eller återaktivera fulltextindexering för en tabell
I Database Engine är alla användarskapade databaser fulltextaktiverade som standard. Dessutom aktiveras en enskild tabell automatiskt för fulltextindexering så snart ett fulltextindex skapas på den och en kolumn läggs till i indexet. En tabell inaktiveras automatiskt för fulltextindexering när den sista kolumnen tas bort från sitt fulltextindex.
På en tabell som har ett fulltextindex kan du manuellt inaktivera eller återaktivera en tabell för fulltextindexering genom att använda SQL Server Management Studio.
Expandera servergruppen, expandera Databaseroch expandera databasen som innehåller den tabell som du vill aktivera för fulltextindexering.
Expandera Tabelleroch högerklicka på den tabell som du vill inaktivera eller återaktivera för fulltextindexering.
Välj Full-Text indexoch välj sedan Inaktivera Full-Text index eller Aktivera Full-Text index.
Ta bort ett fulltextindex från en tabell
I Object Explorer högerklickar du på tabellen med det fulltextindex som du vill ta bort.
Välj Ta bort Full-Text index.
När du uppmanas till det väljer du OK för att bekräfta att du vill ta bort fulltextindexet.