Dela via


Skapa och hantera fulltextindex

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

I den här artikeln beskrivs hur du skapar, fyller i och hanterar fulltextindex i SQL Server.

Skapa en fulltextkatalog

Innan du kan skapa ett fulltextindex måste du ha en fulltextkatalog. Katalogen är en virtuell container för ett eller flera fulltextindex. Mer information finns i 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 baserad 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 (Transact-SQL) Returnerar en rad för varje fulltextkatalog och dess fulltextindexreferens.
sys.fulltext_index_columns (Transact-SQL) Innehåller en rad för varje kolumn som ingår i ett fulltextindex.
sys.fulltext_index_fragments (Transact-SQL) Ett fulltextindex använder interna tabeller som kallas fulltextindexfragment för att lagra inverterade indexdata. Den här vyn kan användas för att fråga 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 (Transact-SQL) Innehåller en rad per fulltextindex för ett tabellobjekt.
sys.dm_fts_index_keywords (Transact-SQL) Returnerar information om innehållet i ett fulltextindex för den angivna tabellen.
sys.dm_fts_index_keywords_by_document (Transact-SQL) 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 (Transact-SQL) 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 . Då öppnas dialogrutan Fulltextindex Egenskaper.

  5. I fönstret Välj en sida kan du välja någon av följande sidor:

    Sida Beskrivning
    Allmänt Visar grundläggande egenskaper för fulltextindexet. Dessa omfattar flera ändringsbara egenskaper och många oföränderliga egenskaper som databasnamn, tabellnamn och namnet på nyckelkolumnen i fulltext. 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 avslutat dialogrutan Full-Text Indexegenskaper associeras alla nyligen skapade scheman med ett SQL Server Agent-jobb (Starta inkrementell tabellpopulation på 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

Flera Transact-SQL funktioner som OBJECTPROPERTYEX kan användas för att hämta värdet för 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 SKRIV KOLUMN i tabellen som innehåller dokumenttypsinformationen för kolumnen. COLUMNPROPERTY
ÄrFulltextIndexerat Om en kolumn har aktiverats 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

Resultatet av funktionerna CONTAINSTABLE eller FREETEXTTABLE rowset-valued måste vanligtvis kopplas till bastabellen. I sådana fall måste du känna till det unika nyckelkolumnnamnet. Du kan fråga om ett visst unikt index används som fulltextnyckel och du kan hämta identifieraren för kolumnen med fulltextnyckeln.

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 du funktionen OBJECT_ID för att konvertera namnet på tabellen (table_name) till tabell-ID:t, ange namnet på ett unikt index för tabellen och ange egenskapen IsFulltextKey index enligt följande:

SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name',  'IsFulltextKey');

Den här instruktionen returnerar 1 om indexet används för att framtvinga unikhet för nyckelkolumnen i fulltext och 0 om det inte är det.

Exempel

Följande exempel frågar om PK_Document_DocumentNode index används för att framtvinga unikheten i kolumnen med fulltextnyckeln enligt följande:

USE AdventureWorks2022;
GO
SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode',  'IsFulltextKey');

Det här exemplet returnerar 1 om PK_Document_DocumentNode index används för att framtvinga unikhet för kolumnen med fulltextnyckel. Annars returneras 0 eller NULL. NULL innebär att du använder ett ogiltigt indexnamn, indexnamnet motsvarar inte tabellen, tabellen finns inte eller så vidare.

Hitta identifieraren för kolumnen med fulltextnyckeln

Varje fulltextaktiverad tabell har en kolumn som används för att framtvinga unika rader för tabellen (den unika nyckelkolumnen). Egenskapen TableFulltextKeyColumn som hämtats från funktionen OBJECTPROPERTYEX innehåller kolumn-ID:t för den unika nyckelkolumnen.

Om du vill hämta den här identifieraren kan du använda en SELECT-instruktion för att anropa funktionen OBJECTPROPERTYEX. Använd funktionen OBJECT_ID för att konvertera namnet på tabellen (table_name) till tabell-ID:t och ange egenskapen TableFulltextKeyColumn enligt följande:

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';

Exempel

I följande exempel returneras identifieraren för nyckelkolumnen i fulltext eller NULL. NULL innebär att du använder ett ogiltigt indexnamn, att indexnamnet inte motsvarar tabellen, att tabellen inte finns eller så vidare.

USE AdventureWorks2022;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

I följande exempel visas hur du använder identifieraren för den unika nyckelkolumnen för att hämta namnet på kolumnen.

USE AdventureWorks2022;
GO

DECLARE @key_column 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 den här frågan innehöll ett ogiltigt indexnamn motsvarade inte indexnamnet tabellen, tabellen fanns inte och så vidare skulle den returnera NULL.

Index varbinary(max) och XML-kolumner

Om en varbinary(max), varbinaryeller xml kolumnen är fulltextindexerad, kan den frågas med hjälp av fulltextpredikat (CONTAINS och FREETEXT) och funktioner (CONTAINSTABLE och FREETEXTTABLE), som alla andra fulltextindexerade kolumner.

Index varbinary(max) eller varbinary-data

En enda varbinary(max) eller varbinary kolumn kan lagra många typer av dokument. SQL Server stöder alla dokumenttyper för vilka ett filter är installerat och tillgängligt i det operativa systemet. Dokumenttypen för varje dokument identifieras av filnamnstillägget för dokumentet. För ett .doc filnamnstillägg använder fulltextsökning till exempel 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:

EXEC 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). Den här informationen måste lagras i en tabellkolumn, som kallas för en typkolumn, som måste associeras med varbinary(max) kolumn 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.

Mer information om indexering och frågor på en XML--kolumn finns i Använda Full-Text Search med XML-kolumner.

Inaktivera eller återaktivera fulltextindexering för en tabell

I SQL Server ä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.

I en tabell med ett fulltextindex kan du manuellt inaktivera eller återaktivera en tabell för fulltextindexering med 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.

Nästa steg