Anteckning
Å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
Beskriver hur du aktiverar eller inaktiverar statistisk semantisk indexering för valda kolumner som innehåller dokument eller text.
Statistisk semantisk sökning använder indexen som skapats av Full-Text Search och skapar extra index. Som ett resultat av det här beroendet av fulltextsökning skapar du ett nytt semantiskt index när du definierar ett nytt fulltextindex eller när du ändrar ett befintligt fulltextindex. Du kan skapa ett nytt semantiskt index med hjälp av Transact-SQL-instruktioner eller med hjälp av guiden Full-Text indexering och andra dialogrutor i SQL Server Management Studio enligt beskrivningen i den här artikeln.
Skapa ett semantiskt index
Krav och begränsningar för att skapa ett semantiskt index
Du kan skapa ett index för alla databasobjekt som stöds för fulltextindexering, inklusive tabeller och indexerade vyer.
Innan du kan aktivera semantisk indexering för specifika kolumner måste följande förutsättningar finnas:
Det måste finnas en fulltextkatalog för databasen.
Tabellen måste ha ett fulltextindex.
De markerade kolumnerna måste delta i fulltextindexet.
Du kan skapa och aktivera alla dessa krav samtidigt.
Du kan skapa ett semantiskt index för kolumner som har någon av de datatyper som stöds för fulltextindexering. Mer information finns i Skapa och hantera Full-Text index.
Du kan ange vilken dokumenttyp som helst som stöds för fulltextindexering för varbinary(max) kolumner. För mer information, se Så här: Fastställ vilka dokumenttyper som kan indexeras i den här artikeln.
Semantisk indexering skapar två typer av index för de kolumner som du väljer – ett index med nyckelfraser och ett index med dokumentlikhet. Du kan inte bara välja en typ av index eller en annan när du aktiverar semantisk indexering. Du kan dock köra frågor mot dessa två index oberoende av varandra. Mer information finns i Hitta nyckelfraser i dokument med semantisk sökning och Hitta liknande och relaterade dokument med semantisk sökning.
Om du inte uttryckligen anger en LCID för ett semantiskt index används endast det primära språket och dess associerade språkstatistik för semantisk indexering.
Om du anger ett språk för en kolumn som språkmodellen inte är tillgänglig för misslyckas skapandet av indexet och returnerar ett felmeddelande.
Skapa ett semantiskt index när det inte finns något fulltextindex
När du skapar ett nytt fulltextindex med CREATE FULLTEXT INDEX-instruktionen kan du aktivera semantisk indexering på kolumnnivå genom att ange nyckelordet STATISTICAL_SEMANTICS som en del av kolumndefinitionen. Du kan också aktivera semantisk indexering när du använder guiden Full-Text indexering för att skapa ett nytt fulltextindex.
Skapa ett nytt semantiskt index med hjälp av Transact-SQL
Anropa CREATE FULLTEXT INDEX-instruktionen och ange STATISTICAL_SEMANTICS för varje kolumn där du vill skapa ett semantiskt index. Mer information om alla alternativ för den här instruktionen finns i CREATE FULLTEXT INDEX (Transact-SQL).
Exempel 1: Skapa ett unikt index, fulltextindex och semantiskt index
I följande exempel skapas en standardkatalog för fulltext, ft. Exemplet skapar sedan ett unikt index i kolumnen JobCandidateID i HumanResources.JobCandidate-tabellen i AdventureWorks2022 exempeldatabas. Det här unika indexet krävs som nyckelkolumn för ett fulltextindex. Exemplet skapar sedan ett fulltextindex och ett semantiskt index i kolumnen Resume.
CREATE FULLTEXT CATALOG ft AS DEFAULT
GO
CREATE UNIQUE INDEX ui_ukJobCand
ON HumanResources.JobCandidate(JobCandidateID)
GO
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
(Resume
Language 1033
Statistical_Semantics
)
KEY INDEX JobCandidateID
WITH STOPLIST = SYSTEM
GO
Exempel 2: Skapa ett fulltext- och semantiskt index på flera kolumner med fördröjd indexpopulation
I följande exempel skapas en fulltextkatalog, documents_catalog, i AdventureWorks2022 exempeldatabas. Exemplet skapar sedan ett fulltextindex som använder den nya katalogen. Fulltextindexet skapas i kolumnerna Title, DocumentSummaryoch Document i tabellen Production.Document, medan det semantiska indexet bara skapas i kolumnen Document. Det här fulltextindexet använder den nyligen skapade fulltextkatalogen och ett befintligt unikt nyckelindex PK_Document_DocumentID. Som vi rekommenderar skapas den här indexnyckeln i en heltalskolumn DocumentID. Exemplet anger LCID för engelska, 1033, som är språket för data i kolumnerna.
Det här exemplet anger också att ändringsspårningen är inaktiverad utan population. Senare, under tider med låg belastning, använder exemplet en ALTER FULLTEXT INDEX-instruktion för att starta en fullständig population på det nya indexet och aktivera automatisk ändringsspårning.
CREATE FULLTEXT CATALOG documents_catalog
GO
CREATE FULLTEXT INDEX ON Production.Document
(
Title
Language 1033,
DocumentSummary
Language 1033,
Document
TYPE COLUMN FileExtension
Language 1033
Statistical_Semantics
)
KEY INDEX PK_Document_DocumentID
ON documents_catalog
WITH 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
Skapa ett nytt semantiskt index med hjälp av SQL Server Management Studio
Kör guiden Full-Text indexering och aktivera statistiska semantik på sidan Välj tabellkolumner för varje kolumn där du vill skapa ett semantiskt index. Mer information, inklusive information om hur du startar Full-Text indexeringsguiden, finns i Använd Full-Text indexeringsguiden.
Skapa ett semantiskt index när det finns ett befintligt fulltextindex
Du kan lägga till semantisk indexering när du ändrar ett befintligt fulltextindex med instruktionen ALTER FULLTEXT INDEX. Du kan också lägga till semantisk indexering med hjälp av olika dialogrutor i SQL Server Management Studio.
Lägg till ett semantiskt index med hjälp av Transact-SQL
Anropa ALTER FULLTEXT INDEX-instruktionen med de alternativ som beskrivs i följande avsnitt för varje kolumn där du vill lägga till ett semantiskt index. För mer information om alla alternativ för detta uttalande, se ALTER FULLTEXT INDEX (Transact-SQL).
Både fulltext- och semantiska index fylls i igen efter ett anrop till ALTER, om du inte anger något annat.
Om du bara vill lägga till fulltextindexering i en kolumn använder du syntaxen
ADD.Om du vill lägga till både fulltext- och semantisk indexering i en kolumn använder du
ADDsyntax med alternativetSTATISTICAL_SEMANTICS.Om du vill lägga till semantisk indexering i en kolumn som redan är aktiverad för fulltextindexering använder du alternativet
ADD STATISTICAL_SEMANTICS. Du kan bara lägga till semantisk indexering i en kolumn i en endaALTER-instruktion.
Exempel: Lägg till semantisk indexering i en kolumn som redan har fulltextindexering
I följande exempel ändras ett befintligt fulltextindex i Production.Document tabell i AdventureWorks2022 exempeldatabas. Exemplet lägger till ett semantiskt index i kolumnen Document i tabellen Production.Document, som redan har ett fulltextindex. Exemplet anger att indexet inte fylls i automatiskt.
ALTER FULLTEXT INDEX ON Production.Document
ALTER COLUMN Document
ADD Statistical_Semantics
WITH NO POPULATION
GO
Lägga till ett semantiskt index med hjälp av SQL Server Management Studio
Du kan ändra de kolumner som är aktiverade för semantisk indexering och fulltextindexering på sidan Full-Text indexkolumner i dialogrutan Full-Text Indexegenskaper. Mer information finns i Hantera Full-Text index.
Ändra ett semantiskt index
Krav och begränsningar för att ändra ett befintligt index
Du kan inte ändra ett befintligt index medan populationen av indexet pågår. Mer information om hur du övervakar förloppet för indexpopulationen finns i Hantera och övervaka semantisk sökning.
Du kan inte lägga till indexering i en kolumn och ändra eller släppa indexering för samma kolumn i ett enda anrop till
ALTER FULLTEXT INDEX-instruktionen.
Ta bort ett semantiskt index
Du kan släppa semantisk indexering när du ändrar ett befintligt fulltextindex med ALTER FULLTEXT INDEX-instruktionen. Du kan också släppa semantisk indexering med hjälp av olika dialogrutor i SQL Server Management Studio.
Ta bort ett semantiskt index med hjälp av Transact-SQL
Om du bara vill släppa semantisk indexering från en kolumn eller kolumner anropar du instruktionen ALTER FULLTEXT INDEX med alternativet ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS. Du kan släppa indexeringen från flera kolumner i en enda ALTER-instruktion.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP STATISTICAL_SEMANTICS;
GO
Om du vill släppa både fulltext- och semantisk indexering från en kolumn anropar du ALTER FULLTEXT INDEX-instruktionen med alternativet ALTER COLUMN <column_name> DROP.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP;
GO
Ta bort ett semantiskt index med SQL Server Management Studio
Du kan ändra de kolumner som är aktiverade för semantisk indexering och fulltextindexering på sidan Full-Text indexkolumner i dialogrutan Full-Text Indexegenskaper. Mer information finns i Hantera Full-Text Index.
Krav och begränsningar för att ta bort ett semantiskt index
Du kan inte släppa fulltextindexering från en kolumn samtidigt som du behåller semantisk indexering. Semantisk indexering beror på fulltextindexering för dokumentlikhetsresultat.
Du kan inte ange alternativet
NO POPULATIONnär du släpper semantisk indexering från den sista kolumnen i en tabell som semantisk indexering har aktiverats för. En befolkningscykel krävs för att ta bort resultaten som indexerades tidigare.
Kontrollera om semantisk sökning är aktiverat på databasobjekt
Är semantisk sökning aktiverat för en databas?
Hämta egenskapen IsFullTextEnabled för DATABASEPROPERTYEX (Transact-SQL) metadatafunktions.
Ett returvärde för 1 anger att fulltextsökning och semantisk sökning är aktiverade för databasen. Ett returvärde för 0 anger att de inte är aktiverade.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO
Är semantisk sökning aktiverat för en tabell?
Kör en fråga på TableFullTextSemanticExtraction-egenskapen i metadatafunktionen OBJECTPROPERTYEX (Transact-SQL).
Ett returvärde på 1 anger att semantisk sökning är aktiverat för tabellen. ett returvärde på 0 anger att det inte är aktiverat.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO
Är semantisk sökning aktiverat för en kolumn?
Så här avgör du om semantisk sökning är aktiverat för en specifik kolumn:
Hämta egenskapen
StatisticalSemanticsför COLUMNPROPERTY-metadatfunktionen (Transact-SQL).Ett returvärde på 1 anger att semantisk sökning är aktiverat för kolumnen. ett returvärde på 0 anger att det inte är aktiverat.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics'); GOFråga katalogvyn sys.fulltext_index_columns (Transact-SQL) för att få information om fulltextindexet.
Värdet 1 i kolumnen
statistical_semanticsanger att den angivna kolumnen är aktiverad för semantisk indexering utöver fulltextindexering.SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('table_name'); GOHögerklicka på en kolumn i Object Explorer i Management Studio och välj Egenskaper. På sidan Allmänt i dialogrutan Kolumnegenskaper markerar du värdet för egenskapen Statistiska semantik.
Värdet True anger att den angivna kolumnen är aktiverad för semantisk indexering utöver fulltextindexering.
Fastställa vad som kan indexeras för semantisk sökning
Kontrollera vilka språk som stöds för semantisk sökning
Färre språk stöds för semantisk indexering än för fulltextindexering. Därför kan det finnas kolumner som du kan indexera för fulltextsökning, men inte för semantisk sökning.
Sök i katalogvyn sys.fulltext_semantic_languages (Transact-SQL).
SELECT * FROM sys.fulltext_semantic_languages;
GO
Följande språk stöds för semantisk indexering. Den här listan representerar utdata från katalogvyn sys.fulltext_semantic_languages (Transact-SQL), ordnade efter LCID.
| Språk | LCID |
|---|---|
| Traditionell kinesiska | 1028 |
| Tyska | 1031 |
| Engelska (US) | 1033 |
| Franska | 1036 |
| Italienska | 1040 |
| Brasiliansk | 1046 |
| Ryska | 1049 |
| Svenska | 1053 |
| Förenklad kinesiska | 2052 |
| Brittisk engelska | 2057 |
| Portugisiska | 2070 |
| Kinesiska (Hongkong, särskild administrativ region, Kina) | 2070 |
| Spanska | 3082 |
| Kinesiska (Singapore) | 4100 |
| Kinesiska (Macao SAR) | 5124 |
Obs
Om resultatet är tomt måste du ladda ned och installera databasen Semantic Language Statistics. Mer information finns i Installera, bifoga och registrera databasen för semantisk språkstatistik.
Avgöra vilka dokumenttyper som kan indexeras
Fråga katalogvyn sys.fulltext_document_types (Transact-SQL).
Om den dokumenttyp som du vill indexeras inte finns i listan över typer som stöds kan du behöva leta upp, ladda ned och installera ytterligare filter. Mer information finns i Visa eller Ändra registrerade filter och ordbrytare.
Bästa praxis: Skapa en separat filgrupp för fulltext- och semantiska index
Överväg att skapa en separat filgrupp för fulltext- och semantiska index om diskutrymmesallokering är ett problem. Semantiska index skapas i samma filgrupp som fulltextindexet. Ett fullständigt ifyllt semantiskt index kan innehålla stora mängder data.
Problem: Sökning i en specifik kolumn returnerar inga resultat
Angavs en icke-Unicode LCID för ett Unicode-språk?
Det är möjligt att aktivera semantisk indexering för en kolumntyp som inte är Unicode med en LCID för ett språk som bara har Unicode-ord, till exempel LCID 1049 för ryska. I det här fallet returneras aldrig några resultat från semantiska index i den här kolumnen.