Aktivieren der semantischen Suche in Tabellen und Spalten
Gilt für:SQL Server
Beschreibt, wie die statistische semantische Indizierung für ausgewählte Spalten, die Dokumente oder Text enthalten, aktiviert bzw. deaktiviert wird.
Die statistische semantische Suche verwendet die Indizes, die von der Volltextsuche erstellt wurden, und erstellt zusätzliche Indizes. Als Ergebnis dieser Abhängigkeit von der Volltextsuche erstellen Sie einen neuen semantischen Index, wenn Sie einen neuen Volltextindex definieren oder einen vorhandenen Volltextindex ändern. Sie können einen neuen semantischen Index mithilfe von Transact-SQL-Anweisungen oder mithilfe des Volltextindizierungs-Assistenten und anderer Dialogfelder in SQL Server Management Studio erstellen, wie in diesem Artikel beschrieben.
Erstellen eines semantischen Indexes
Anforderungen und Einschränkungen für das Erstellen eines semantischen Indexes
Sie können einen Index für alle Datenbankobjekte erstellen, die für Volltextindizierung unterstützt werden, einschließlich Tabellen und indizierte Sichten.
Bevor Sie die semantische Indizierung für bestimmte Spalten aktivieren können, müssen die folgenden Anforderungen erfüllt werden:
Für die Datenbank muss ein Volltextkatalog vorhanden sein.
Die Tabelle muss über einen Volltextindex verfügen.
Die ausgewählten Spalten müssen Teil des Volltextindexes sein.
Diese Anforderungen können alle gleichzeitig erstellt und aktiviert werden.
Sie können einen semantischen Index für Spalten erstellen, die einen der für Volltextindizierung unterstützten Datentypen aufweisen. Weitere Informationen finden Sie unter Erstellen und Verwalten von Volltextindizes.
Sie können einen beliebigen Dokumenttyp angeben, der für Volltextindizierung für varbinary(max) -Spalten unterstützt wird. Weitere Informationen finden Sie unter How To: Determine Which Document Types Can Be Indized in this article.
Bei der semantischen Indizierung werden zwei Typen von Indizes für die ausgewählten Spalten erstellt: ein Index mit Schlüsselausdrücken und ein Index für Dokumentähnlichkeit. Sie können nicht nur einen Indextyp oder den anderen auswählen, wenn Sie die semantische Indizierung aktivieren. Sie können diese beiden Indizes jedoch unabhängig voneinander abfragen. Weitere Informationen finden Sie unter Suchen von Schlüsselausdrücken in Dokumenten mit der semantischen Suche und Suchen von ähnlichen und verwandten Dokumenten mit semantischer Suche.
Wenn Sie keine LCID für einen semantischen Index explizit angeben, werden nur die primäre Sprache und die zugehörige Sprachstatistik für die semantische Indizierung verwendet.
Wenn Sie eine Sprache für eine Spalte angeben, für die das Sprachmodell nicht verfügbar ist, schlägt die Erstellung des Indexes fehl und gibt eine Fehlermeldung zurück.
Erstellen eines semantischen Indexes, wenn kein Volltextindex vorhanden ist
Wenn Sie einen neuen Volltextindex mit der CREATE FULLTEXT INDEX
Anweisung erstellen, können Sie die semantische Indizierung auf Spaltenebene aktivieren, indem Sie das Schlüsselwort STATISTICAL_SEMANTICS
als Teil der Spaltendefinition angeben. Sie können die semantische Indizierung auch aktivieren, wenn Sie einen neuen Volltextindex mithilfe des Volltextindizierungs-Assistenten erstellen.
Erstellen eines neuen semantischen Indexes mit Transact-SQL
Rufen Sie die CREATE FULLTEXT INDEX
Anweisung auf, und geben STATISTICAL_SEMANTICS
Sie für jede Spalte an, für die Sie einen semantischen Index erstellen möchten. Weitere Informationen zu allen Optionen für diese Anweisung finden Sie unter CREATE FULLTEXT INDEX (Transact-SQL).
Beispiel 1: Erstellen eines eindeutigen Indexes, eines Volltextindexes und eines semantischen Indexes
Im folgenden Beispiel wird ein Standard-Volltextkatalog erstellt. ft
Anschließend wird in dem Beispiel ein eindeutiger Index für die JobCandidateID
Spalte der HumanResources.JobCandidate
Tabelle der AdventureWorks2022
Beispieldatenbank erstellt. Dieser eindeutige Index ist als Schlüsselspalte für einen Volltextindex erforderlich. Anschließend wird ein Volltextindex und ein semantischer Index für die Resume
Spalte erstellt.
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
Beispiel 2: Erstellen eines Volltextindexes und eines semantischen Indexes in mehreren Spalten mit verzögerter Indexauffüllung
Im folgenden Beispiel wird ein Volltextkatalog, documents_catalog
, in der AdventureWorks2022
-Beispieldatenbank erstellt. Im Beispiel wird dann ein Volltextindex erstellt, der diesen neuen Katalog verwendet. Der Volltextindex wird in den Title
Spalten DocumentSummary
und Spalten Document
der Production.Document
Tabelle erstellt, während der semantische Index nur in der Document
Spalte erstellt wird. Dieser Volltextindex verwendet den neu erstellten Volltextkatalog und einen vorhandenen eindeutigen Schlüsselindex. PK_Document_DocumentID
Wie empfohlen, wird dieser Indexschlüssel in einer ganzzahligen Spalte erstellt. DocumentID
Im Beispiel ist die LCID für Englisch, 1033, angegeben. Dies entspricht der Sprache der Daten in den Spalten.
In diesem Beispiel wird auch angegeben, dass die Änderungsnachverfolgung ohne Auffüllung deaktiviert ist. Später verwendet das Beispiel eine Anweisung, um eine ALTER FULLTEXT INDEX
vollständige Population für den neuen Index zu starten und die automatische Änderungsnachverfolgung zu aktivieren.
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
Der Index wird später zu einem Zeitpunkt mit wenig Datenverkehr aufgefüllt:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO
Erstellen eines neuen semantischen Indexes mithilfe von SQL Server Management Studio
Führen Sie den Volltextindizierungs-Assistenten aus, und aktivieren Sie für jede Spalte, in der Sie einen semantischen Index erstellen möchten, die Option Statistische Semantik auf der Seite Tabellenspalten auswählen. Weitere Informationen, einschließlich Informationen zum Starten des Volltextindizierungs-Assistenten, finden Sie unter Verwenden des Volltextindizierungs-Assistenten.
Erstellen eines semantischen Indexes, wenn ein vorhandener Volltextindex vorhanden ist
Sie können eine semantische Indizierung hinzufügen, wenn Sie einen vorhandenen Volltextindex mit der ALTER FULLTEXT INDEX
Anweisung ändern. Sie können auch semantische Indizierung hinzufügen, indem Sie verschiedene Dialogfelder in SQL Server Management Studio verwenden.
Hinzufügen eines semantischen Indexes mit Transact-SQL
Rufen Sie die ALTER FULLTEXT INDEX
Anweisung mit den im folgenden Abschnitt beschriebenen Optionen für jede Spalte auf, in der Sie einen semantischen Index hinzufügen möchten. Weitere Informationen zu allen Optionen für diese Anweisung finden Sie unter ALTER FULLTEXT INDEX (Transact-SQL).
Sowohl Volltext- als auch semantische Indizes werden nach einem Aufruf ALTER
erneut aufgefüllt, es sei denn, Sie geben andernfalls an.
Wenn Sie einer Spalte nur Volltextindizierung hinzufügen möchten, verwenden Sie die
ADD
Syntax.Wenn Sie einer Spalte sowohl Volltext- als auch semantische Indizierung hinzufügen möchten, verwenden Sie die
ADD
Syntax mit derSTATISTICAL_SEMANTICS
Option.Wenn Sie einer Spalte, die bereits für die Volltextindizierung aktiviert ist, semantische Indizierung hinzufügen möchten, verwenden Sie die
ADD STATISTICAL_SEMANTICS
Option. Sie können einer einzelnen AnweisungALTER
nur eine semantische Indizierung hinzufügen.
Beispiel: Hinzufügen von semantischer Indizierung zu einer Spalte, die bereits eine Volltextindizierung aufweist
Im folgenden Beispiel wird ein vorhandener Volltextindex für Production.Document
die Tabelle in der AdventureWorks2022
Beispieldatenbank geändert. Im Beispiel wird der Spalte der Production.Document
Tabelle ein semantischer Index Document
hinzugefügt, der bereits über einen Volltextindex verfügt. Das Beispiel gibt an, dass der Index nicht automatisch aufgefüllt wird.
ALTER FULLTEXT INDEX ON Production.Document
ALTER COLUMN Document
ADD Statistical_Semantics
WITH NO POPULATION
GO
Hinzufügen eines semantischen Indexes mithilfe von SQL Server Management Studio
Sie können die Spalten, die für die semantische Indizierung und die Volltextindizierung verfügbar sind, auf der Seite Volltextindexspalten des Dialogfelds Volltextindex-Eigenschaften ändern. Weitere Informationen finden Sie unter Verwalten von Volltextindizes.
Ändern eines semantischen Indexes
Anforderungen und Einschränkungen zum Ändern eines vorhandenen Indexes
Sie können einen vorhandenen Index nicht ändern, während die Grundpopulation des Indexes ausgeführt wird. Weitere Informationen zum Überwachen des Status der Indexauffüllung finden Sie unter Verwalten und Überwachen der semantischen Suche.
Sie können einer Spalte keine Indizierung hinzufügen und die Indizierung für dieselbe Spalte in einem einzigen Aufruf der
ALTER FULLTEXT INDEX
Anweisung ändern oder ablegen.
Ablegen eines semantischen Indexes
Sie können die semantische Indizierung ablegen, wenn Sie einen vorhandenen Volltextindex mit der ALTER FULLTEXT INDEX
Anweisung ändern. Sie können die semantische Indizierung auch mithilfe verschiedener Dialogfelder in SQL Server Management Studio ablegen.
Löschen eines semantischen Indexes mit Transact-SQL
Rufen Sie die Anweisung mit der ALTER FULLTEXT INDEX
ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS
Option auf, um die semantische Indizierung nur aus einer Spalte oder Spalte abzulegen. Sie können die Indizierung aus mehreren Spalten in einer einzelnen ALTER
Anweisung ablegen.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP STATISTICAL_SEMANTICS;
GO
Rufen Sie die Anweisung mit der ALTER FULLTEXT INDEX
ALTER COLUMN <column_name> DROP
Option auf, um sowohl Volltext als auch semantische Indizierung aus einer Spalte abzulegen.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP;
GO
Ablegen eines semantischen Indexes mit SQL Server Management Studio
Sie können die Spalten, die für die semantische Indizierung und die Volltextindizierung verfügbar sind, auf der Seite Volltextindexspalten des Dialogfelds Volltextindex-Eigenschaften ändern. Weitere Informationen finden Sie unter Verwalten von Volltextindizes.
Anforderungen und Einschränkungen für das Ablegen eines semantischen Indexes
Die Volltextindizierung kann nicht aus einer Spalte entfernt werden, während die semantische Indizierung beibehalten wird. Die semantische Indizierung ist für Dokumentähnlichkeitsergebnisse von der Volltextindizierung abhängig.
Sie können die Option nicht angeben, wenn Sie die
NO POPULATION
semantische Indizierung aus der letzten Spalte in einer Tabelle ablegen, für die die semantische Indizierung aktiviert wurde. Zur Entfernung der Ergebnisse, die zuvor indiziert wurden, ist ein Auffüllungszyklus erforderlich.
Überprüfen, ob die semantische Suche für Datenbankobjekte aktiviert ist
Ist die semantische Suche für eine Datenbank aktiviert?
Abfragen der IsFullTextEnabled
Eigenschaft der DATABASEPROPERTYEX -Metadatenfunktion (Transact-SQL).
Ein Rückgabewert von 1
gibt an, dass die Volltextsuche und die semantische Suche für die Datenbank aktiviert sind. Ein Rückgabewert von 0
gibt an, dass sie nicht aktiviert sind.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO
Ist die semantische Suche für eine Tabelle aktiviert?
Query the TableFullTextSemanticExtraction
property of the OBJECTPROPERTYEX (Transact-SQL) metadata function.
Ein Rückgabewert von 1 gibt an, dass die semantische Suche für die Tabelle aktiviert ist; Ein Rückgabewert von 0 gibt an, dass er nicht aktiviert ist.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO
Ist die semantische Suche für eine Spalte aktiviert?
So bestimmen Sie, ob die semantische Suche für eine bestimmte Spalte aktiviert ist:
Query the
StatisticalSemantics
property of the COLUMNPROPERTY (Transact-SQL) metadata function.Ein Rückgabewert von 1 gibt an, dass die semantische Suche für die Spalte aktiviert ist; Ein Rückgabewert von 0 gibt an, dass er nicht aktiviert ist.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics'); GO
Abfragen der Katalogansicht sys.fulltext_index_columns (Transact-SQL) für den Volltextindex.
Ein Wert von 1 in der
statistical_semantics
Spalte gibt an, dass die angegebene Spalte zusätzlich zur Volltextindizierung für die semantische Indizierung aktiviert ist.SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('table_name'); GO
Klicken Sie im Objekt-Explorer in Management Studio mit der rechten Maustaste auf eine Spalte, und wählen Sie "Eigenschaften" aus. Überprüfen Sie auf der Seite Allgemein des Dialogfelds Spalteneigenschaften den Wert der Eigenschaft Statistical Semantics .
Der Wert TRUE gibt an, dass die angegebene Spalte zusätzlich zur Volltextindizierung für die semantische Indizierung aktiviert ist.
Ermitteln der indizierbaren Objekte für die semantische Suche
Überprüfen, welche Sprachen für die semantische Suche unterstützt werden
Für die semantische Indizierung werden weniger Sprachen als für die Volltextindizierung unterstützt. Es gibt daher möglicherweise Spalten, die für die Volltextsuche, aber nicht für die semantische Suche indiziert werden können.
Abfragen der Katalogansicht sys.fulltext_semantic_languages (Transact-SQL)
SELECT * FROM sys.fulltext_semantic_languages;
GO
Für die semantische Indizierung werden die folgenden Sprachen unterstützt: Diese Liste stellt die Ausgabe der Katalogansicht sys.fulltext_semantic_languages (Transact-SQL) dar, sortiert nach LCID.
Sprache | LCID |
---|---|
Chinesisch (traditionell) | 1028 |
Deutsch | 1031 |
Englisch (USA) | 1033 |
Französisch | 1036 |
Italienisch | 1040 |
Brasilianisch | 1046 |
Russisch | 1049 |
Schwedisch | 1053 |
Chinesisch (vereinfacht) | 2052 |
Englisch (britisch) | 2057 |
Portugiesisch | 2070 |
Chinesisch (Hongkong, SAR, VR China) | 2070 |
Spanisch | 3082 |
Chinesisch (Singapur) | 4100 |
Chinesisch (Macao SAR) | 5124 |
Hinweis
Wenn die Ergebnisse leer sind, müssen Sie die Datenbank für semantische Sprachstatistiken herunterladen und installieren. Weitere Informationen finden Sie unter Installieren, Anfügen und Registrieren der Datenbank für semantische Sprachstatistiken.
Bestimmen, welche Dokumenttypen indiziert werden können
Abfragen der Katalogansicht sys.fulltext_document_types (Transact-SQL).
Wenn sich der Dokumenttyp, den Sie indizieren möchten, nicht in der Liste der unterstützten Typen befindet, müssen Sie möglicherweise weitere Filter suchen, herunterladen und installieren. Weitere Informationen finden Sie unter anzeigen oder Ändern von registrierten filtern und Wörtertrennungen.
Bewährte Methode: Erstellen einer separaten Dateigruppe für die Volltext- und Semantikindizes
Erwägen Sie, eine separate Dateigruppe für den Volltext- und den semantischen Index zu erstellen, wenn Sie Bedenken im Hinblick auf die Speicherplatzzuordnung haben. Die semantischen Indizes werden in derselben Dateigruppe wie der Volltextindex erstellt. Ein vollständig aufgefüllter semantischer Index kann eine große Datenmenge enthalten.
Problem: Die Suche nach einer bestimmten Spalte gibt keine Ergebnisse zurück.
Wurde eine Nicht-Unicode-LCID für eine Unicode-Sprache angegeben?
Es ist möglich, die semantische Indizierung für einen Nicht-Unicode-Spaltentyp mit einer LCID für eine Sprache zu aktivieren, die nur Unicode-Wörter aufweist, z. B. LCID 1049 für Russisch. In diesem Fall werden in dieser Spalte keine Ergebnisse aus den semantischen Indizes zurückgegeben.