Skapa och hantera fulltextindex

gäller för:SQL ServerAzure SQL DatabaseAzure 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-.

  1. Expandera servern i Object Explorer i SQL Server Management Studio.

  2. Expandera Databaseroch expandera sedan databasen som innehåller fulltextindexet.

  3. Expandera tabeller.

  4. 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 .

  5. 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 egenskapslista
    kolumner 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).
  6. 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.

  1. Expandera servergruppen, expandera Databaseroch expandera databasen som innehåller den tabell som du vill aktivera för fulltextindexering.

  2. Expandera Tabelleroch högerklicka på den tabell som du vill inaktivera eller återaktivera för fulltextindexering.

  3. 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

  1. I Object Explorer högerklickar du på tabellen med det fulltextindex som du vill ta bort.

  2. Välj Ta bort Full-Text index.

  3. När du uppmanas till det väljer du OK för att bekräfta att du vill ta bort fulltextindexet.