Kom igång med Full-Text Search
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Server-databaser är fulltextaktiverade som standard. Innan du kan köra fulltextfrågor måste du dock skapa en fullständig textkatalog och skapa ett fulltextindex för de tabeller eller indexerade vyer som du vill söka i.
Konfigurera fulltextsökning i två steg
Det finns två grundläggande steg för att konfigurera fulltextsökning:
- Skapa en fulltextkatalog.
- Skapa ett fulltextindex för tabeller eller indexerad vy som du vill söka i.
Varje fulltextindex måste tillhöra en fulltextkatalog. Du kan skapa en separat textkatalog för varje fulltextindex eller associera flera fulltextindex med en viss katalog. En fulltextkatalog är ett virtuellt objekt och tillhör inte någon filgrupp. Katalogen är ett logiskt begrepp som refererar till en grupp fulltextindex.
Not
De här stegen förutsätter att du har installerat de valfria Full-Text Search-komponenterna när du installerade SQL Server. Annars måste du köra SQL Server-installationsprogrammet igen för att lägga till dem.
Konfigurera fulltextsökning med en guide
Information om hur du konfigurerar fulltextsökning med hjälp av en guide finns i Använd Full-Text indexeringsguiden.
Konfigurera fulltextsökning med Transact-SQL
I följande tvådelade exempel skapas en fulltextkatalog med namnet AdvWksDocFTCat
på AdventureWorks-exempeldatabasen och skapar sedan ett fulltextindex i tabellen Document
i exempeldatabasen. Den här instruktionen skapar fulltextkatalogen i standardkatalogen som angavs under SQL Server-installationen. Mappen med namnet AdvWksDocFTCat
finns i standardkatalogen.
Om du vill skapa en fulltextkatalog med namnet
AdvWksDocFTCat
använder exemplet en CREATE FULLTEXT CATALOG-instruktion:USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;
Mer information finns i Skapa och hantera Full-Text kataloger.
Innan du kan skapa ett fulltextindex i dokumenttabellen måste du se till att tabellen har ett unikt index med en enda kolumn som inte kan nollföras. Följande CREATE INDEX-instruktionen skapar ett unikt index,
ui_ukDoc
, i kolumnen DocumentID i dokumenttabellen:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);
Släpp det befintliga fulltextindexet i tabellen
Document
med hjälp av följande DROP FULLTEXT INDEX-instruktion.DROP FULLTEXT INDEX ON Production.Document GO
När du har en unik nyckel kan du skapa ett fulltextindex i tabellen
Document
med hjälp av följande CREATE FULLTEXT INDEX-instruktion.CREATE FULLTEXT INDEX ON Production.Document ( Document --Full-text index column name TYPE COLUMN FileExtension --Name of column that contains file type information Language 2057 --2057 is the LCID for British English ) KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index WITH CHANGE_TRACKING AUTO --Population type; GO
DEN TYPKOLUMN som definieras i det här exemplet anger typkolumnen i tabellen som innehåller typen av dokumentet på varje rad i kolumnen "Dokument" (som är av binär typ). Typkolumnen lagrar det användardefinierade filnamnstillägget – som ".doc", ".xls" och så vidare – för dokumentet i en given rad. Full-Text Engine använder filnamnstillägget på en viss rad för att anropa rätt filter som ska användas för att parsa data på den raden. När filtret har parsat binära data för raden parsar den angivna ordbrytaren innehållet. (I det här exemplet används ordet breaker för brittisk engelska.) Mer information finns i Konfigurera och hantera filter för sök.
Mer information finns i Skapa och hantera Full-Text index.
Välj alternativ för ett fulltextindex
Välj ett språk
Information om hur du väljer kolumnspråk finns i Välj ett språk när du skapar ett Full-Text Index.
Välj en filgrupp
Processen att skapa ett fulltextindex är ganska I/O-intensiv. Sammanfattningsvis består den av att läsa data från SQL Server och sedan sprida filtrerade data till fulltextindexet. Vi rekommenderar att du letar upp ett fulltextindex i databasfilgruppen som är bäst för att maximera I/O-prestanda eller leta upp fulltextindexen i en annan filgrupp på en annan volym.
Välj en fulltextkatalog
Vi rekommenderar att du associerar tabeller med samma uppdateringsegenskaper (till exempel ett litet antal ändringar jämfört med ett stort antal ändringar eller tabeller som ändras ofta under en viss tid på dagen) tillsammans under samma fulltextkatalog. Genom att konfigurera fulltextkatalogens befolkningsscheman förblir fulltextindex synkrona med tabellerna utan att det påverkar databasserverns resursanvändning negativt under perioder med hög databasaktivitet.
Tänk på följande riktlinjer:
Om du indexerar en tabell med miljontals rader tilldelar du tabellen till en egen fulltextkatalog.
Tänk på hur mycket ändring som sker i tabellerna som indexeras i fulltext, samt det totala antalet rader. Om det totala antalet rader som ändras, tillsammans med antalet rader i tabellen som finns under den senaste fulltextpopulationen, representerar miljontals rader, tilldelar du tabellen till en egen fulltextkatalog.
Associera ett unikt index
Välj alltid det minsta unika index som är tillgängligt för den unika fulltextnyckeln. (Ett heltalsbaserat index på 4 byte är optimalt.) Detta minskar avsevärt de resurser som krävs av Microsoft Search-tjänsten i filsystemet. Om primärnyckeln är stor (över 100 byte) bör du överväga att välja ett annat unikt index i tabellen (eller skapa ett annat unikt index) som den unika fulltextnyckeln. Om den unika nyckelstorleken i fulltext överskrider den maximala tillåtna storleken (900 byte) kan inte fulltextpopulationen fortsätta.
Associera en stopplista
En stopplista är en lista med stoppord, även kallade brusord. En stopplista är associerad med varje fulltextindex och orden i den stopplistan tillämpas på fulltextfrågor i indexet. Som standard är systemstopplistan associerad med ett nytt fulltextindex. Du kan också skapa och använda din egen stopplista.
Följande CREATE FULLTEXT STOPLIST Transact-SQL-instruktionen skapar till exempel en ny stopplista i fulltext med namnet myStoplist genom att kopiera från systemets stopplista:
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO
Följande ALTER FULLTEXT STOPLIST Transact-SQL-instruktionen ändrar en stopplista med namnet myStoplist och lägger till ordet "en", först för spanska och sedan för franska:
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';
GO
Mer information finns i Konfigurera och hantera stoppord och stopplistor för Full-Text Search.
Uppdatera ett fulltextindex
Precis som vanliga SQL Server-index kan fulltextindex uppdateras automatiskt när data ändras i de associerade tabellerna. Det här är standardbeteendet. Du kan också behålla dina fulltextindex up-to-date manuellt eller med angivna schemalagda intervall. Det kan vara tidskrävande och resurskrävande att fylla i ett fulltextindex. Därför utförs indexuppdatering vanligtvis som en asynkron process som körs i bakgrunden och håller fulltextindexet uppdaterat efter ändringar i bastabellen.
Att uppdatera ett fulltextindex omedelbart efter varje ändring i bastabellen är också resursintensivt. Om du har en hög uppdaterings-/infognings-/borttagningshastighet kan det därför uppstå en viss försämring av frågeprestanda. Om detta inträffar bör du överväga att schemalägga manuella uppdateringar för ändringsspårning för att hålla jämna steg med de många ändringarna från tid till annan, i stället för att konkurrera med förfrågningar om resurser.
Mer information finns i Populate Full-Text Indexes.
Nästa steg
När du har konfigurerat SQL Server Full-Text Search är du redo att köra fulltextfrågor. Mer information finns i Query with Full-Text Search.