Volledige-tekstindexen maken en beheren

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Dit artikel beschrijft hoe je full-text indexen maakt, vult en beheert in de SQL Server Database Engine. Een full-text index ondersteunt zoekwoorden en taalkundige zoekopdrachten over op tekens gebaseerde kolommen in een tabel.

Een catalogus met volledige tekst maken

Voordat je een full-text index kunt maken, heb je een full-text catalogus nodig. De catalogus is een virtuele container voor een of meer volledige-tekstindexen. Voor meer informatie, zie Create and Manage Full-Text Catalogs.

Een volledige-tekstindex maken, wijzigen of verwijderen

Een volledige-tekstindex vullen

Het proces voor het maken en onderhouden van een volldedigteksindex wordt een populatie genoemd (ook wel een crawlgenoemd). Er zijn drie typen volledige-tekstindexpopulatie:

  • Volledige populatie
  • Populatie op basis van wijzigingen bijhouden
  • Incrementele populatie op basis van een tijdstempel

Voor meer informatie, zie Full-Text Indicesvullen.

De eigenschappen van een volledige-tekstindex weergeven

De eigenschappen van een volledige-tekstindex weergeven met Transact-SQL

Catalogus- of dynamische beheerweergave Beschrijving
sys.fulltext_index_catalog_usages Retourneert een rij voor elke verwijzing van een volledige tekstcatalogus naar een volledige tekst-index.
sys.fulltext_index_columns Bevat een rij voor elke kolom die deel uitmaakt van een volledige-tekstindex.
sys.fulltext_index_fragments Een full-text index gebruikt interne tabellen, full-text indexfragmenten genoemd, om de omgekeerde indexgegevens op te slaan. Je kunt deze weergave gebruiken om de metadata van deze fragmenten op te vragen. Deze weergave bevat een rij voor elk indexfragment in volledige tekst in elke tabel die een volledige-tekstindex bevat.
sys.fulltext_indexes Bevat een rij per volledige tekstindex van een tabelobject.
sys.dm_fts_index_keywords Retourneert informatie over de inhoud van een volledige-tekstindex voor de opgegeven tabel.
sys.dm_fts_index_keywords_by_document Retourneert informatie over de inhoud op documentniveau van een volledige-tekstindex voor de opgegeven tabel. Een bepaald trefwoord kan in verschillende documenten worden weergegeven.
sys.dm_fts_index_population Retourneert informatie over de indexpopulaties in volledige tekst die momenteel worden uitgevoerd.

De eigenschappen van een volledige-tekstindex weergeven met SQL Server Management Studio

Notitie

Als u eigenschappen van volledige-tekstindexen voor Azure SQL-databases wilt weergeven, gebruikt u Transact-SQL-.

  1. Vouw in SQL Server Management Studio in Objectverkenner de server uit.

  2. Vouw Databasesuit en vouw vervolgens de database met de volledige-tekstindex uit.

  3. Vouw tabellenuit.

  4. Klik met de rechtermuisknop op de tabel waarop de volledige tekstindex is gedefinieerd, selecteer Full-Text index, en selecteer in het contextmenu van de Full-Text index de optie Eigenschappen. Deze actie opent het dialoogvenster Eigenschappen van de volledige tekstindex .

  5. Selecteer in het Selecteer een pagina-paneel een van de volgende pagina's:

    Bladzijde Beschrijving
    Algemeen Geeft de basiseigenschappen van de volledige-tekstindex weer. Deze eigenschappen omvatten verschillende aanpasbare eigenschappen en veel onveranderbare eigenschappen zoals databasenaam, tabelnaam en de naam van de kolom full-text sleutel. De wijzigbare eigenschappen zijn:

    Full-Text Index-stoplijst

    Full-Text indexering ingeschakeld

    Wijzigingen Bijhouden

    Zoek Eigenschappenlijst
    kolommen Geeft de tabelkolommen weer die beschikbaar zijn voor indexering in volledige tekst. De geselecteerde kolom of kolommen zijn geïndexeerd in volledige tekst. U kunt zo veel van de beschikbare kolommen selecteren als u wilt opnemen in de volledige-tekstindex. Voor meer informatie, zie Full-Text Indicesvullen.
    planningen Op deze pagina kunt u planningen maken of beheren voor een SQL Server Agent-taak waarmee een incrementele tabelpopulatie wordt gestart voor de volledige-tekstindexpopulaties. Voor meer informatie, zie Full-Text Indicesvullen.

    Opmerking: Nadat je het dialoogvenster Full-Text Index Properties hebt gesloten, wordt elke nieuw gemaakte planning gekoppeld aan een SQL Server Agent-taak (Start Incremental Table Population on database_name.table_name).
  6. Selecteer OK- om eventuele wijzigingen op te slaan en het dialoogvenster Eigenschappen van de volledige tekstindex te sluiten.

De eigenschappen van geïndexeerde tabellen en kolommen weergeven

Je kunt verschillende Transact-SQL functies gebruiken, zoals OBJECTPROPERTYEX, om de waarde van verschillende full-text indexeringseigenschappen te verkrijgen. Deze informatie is handig voor het beheren en oplossen van problemen met zoeken in volledige tekst.

De volgende tabel bevat de eigenschappen voor volledige tekst die betrekking hebben op geïndexeerde tabellen en kolommen en hun gerelateerde Transact-SQL functies.

Eigenschap Beschrijving Functie
FullTextTypeColumn TYPE COLUMN in de tabel die de documenttype-informatie van de kolom bevat. COLUMNPROPERTY-
IsFulltextIndexed Geeft aan of een kolom is ingeschakeld voor volledige tekstindexering. COLUMNPROPERTY
IsFulltextKey Of de index een volledige tekstsleutel voor een tabel is. INDEXPROPERTY
TableFulltextBackgroundUpdateIndexOn Of een tabel full-text indexering op de achtergrond heeft. OBJECTPROPERTYEX-
TableFulltextCatalogId Volledige-tekstcatalogus-ID waarin de volledige-tekstindexgegevens voor de tabel zich bevinden. OBJECTPROPERTYEX
VolgwijzigingenVolledigeTekstAan- Of voor een tabel het bijhouden van wijzigingen in volledige tekst is ingeschakeld. OBJECTPROPERTYEX
VerwerkteVolledigeTekstDocumentenTabel Het aantal rijen dat is verwerkt sinds het begin van indexering in volledige tekst. OBJECTPROPERTYEX
TableFulltextFailCount Aantal rijen dat Full-Text Search niet heeft geïndexeerd. OBJECTPROPERTYEX
TableFulltextItemCount- Aantal rijen dat met succes was geïndexeerd in volledige tekst. OBJECTPROPERTYEX
TableVolledigeTekstSleutelKolom De kolom-id van de unieke sleutelkolom in volledige tekst. OBJECTPROPERTYEX
TableFullTextMergeStatus Of een tabel met een volledige-tekstindex momenteel wordt samengevoegd. OBJECTPROPERTYEX
TableFulltextPendingChanges Aantal in behandeling zijnde vermeldingen voor het bijhouden van wijzigingen die moeten worden verwerkt. OBJECTPROPERTYEX
TableFulltextPopulateStatus De status van de populatie in een volledige teksttabel. OBJECTPROPERTYEX
TabelHeeftActieveVolledigeTekstindex Of een tabel een actieve volledige-tekstindex heeft. OBJECTPROPERTYEX

Informatie ophalen over de sleuteldkolom met volledige tekst

Meestal combineer je het resultaat van de rijsetfuncties CONTAINSTABLE of FREETEXTTABLE met de basistabel. In dergelijke gevallen moet u de naam van de unieke sleutelkolom weten. Je kunt controleren of een bepaalde unieke index als full-text key wordt gebruikt, en je kunt de identificatie van de full-text key kolom krijgen.

Bepalen of een bepaalde unieke index wordt gebruikt als de kolom met volledige tekstsleutels

Gebruik een SELECT-instructie om de functie INDEXPROPERTY aan te roepen. Gebruik in de functieaanroep OBJECT_ID de functie om de naam van de tabel (table_name) om te zetten naar de tabel-ID, specificeer de naam van een unieke index voor de tabel en specificeer de IsFulltextKey-indexeigenschap , als volgt:

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

Deze instructie retourneert 1 als de index uniciteit afdwingt voor de full-text-sleutelkolom en 0 als dat niet het geval is.

Voorbeeld

Het volgende voorbeeld controleert of de PK_Document_DocumentNode index uniciteit afdwingt voor de kolom met de volledige tekst sleutel:

USE AdventureWorks2025;
GO

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

Dit voorbeeld retourneert 1 als de index PK_Document_DocumentNode uniekheid afdwingt voor de kolom met de full-textsleutel. Anders geeft het 0 of NULL. NULL betekent dat je een ongeldige indexnaam gebruikt, de indexnaam niet overeenkomt met de tabel, de tabel niet bestaat, enzovoort.

De id van de kolom met volledige tekstsleutel zoeken

Elke voor volledige-tekstzoekopdrachten ingeschakelde tabel heeft een kolom die ervoor zorgt dat de rijen in de tabel uniek zijn (de kolom met de unieke sleutel). De TableFulltextKeyColumn eigenschap, verkregen uit de OBJECTPROPERTYEX functie, bevat de kolom-ID van de unieke sleutelkolom.

Om deze identifier te verkrijgen, gebruik je een SELECT instructie die de OBJECTPROPERTYEX functie aanroept. Gebruik de OBJECT_ID functie om de naam van de tabel (table_name) om te zetten naar de tabel-ID en specificeer de TableFulltextKeyColumn eigenschap, als volgt:

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

Voorbeelden

Het volgende voorbeeld geeft de identificatie van de kolom voltekst sleutel of NULLterug. NULL impliceert dat je een ongeldige indexnaam gebruikt, de indexnaam niet overeenkomt met de tabel, de tabel niet bestaat, enzovoort.

USE AdventureWorks2025;
GO

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

Het volgende voorbeeld laat zien hoe je de id van de kolom met de unieke sleutel gebruikt om de naam van de kolom op te halen.

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

In dit voorbeeld wordt een kolom met resultatensets geretourneerd met de naam Unique Key Column, waarin één rij wordt weergegeven met de naam van de unieke sleutelkolom van de tabel Document, DocumentNode. Als deze zoekopdracht een ongeldige indexnaam bevatte, de indexnaam niet overeenkwam met de tabel, de tabel niet bestond, enzovoort, geeft hij .NULL

Index varbinary(max) en XML-kolommen

Als je een kolom varbinary(max),varbinary of xml indexeert, kun je deze opvragen door gebruik te maken van de full-text predicaten (CONTAINS en FREETEXT) en functies (CONTAINSTABLE en FREETEXTTABLE), zoals elke andere full-text geindexeerde kolom.

Index varbinary(max) of varbinaire gegevens

Eén varbinary(max) of varbinaire kolom kan veel soorten documenten opslaan. De Database Engine ondersteunt elk documenttype waarvoor een filter is geïnstalleerd en beschikbaar is in het besturingssysteem. Het documenttype van elk document wordt aangeduid met de bestandsextensie van het document. Bijvoorbeeld, voor een .doc bestandsextensie gebruikt full-text search het filter dat Microsoft Word-documenten ondersteunt. Voor een lijst met beschikbare documenttypen voert u een query uit op de sys.fulltext_document_types catalogusweergave.

De Full-Text Engine kan bestaande filters gebruiken die in het besturingssysteem zijn geïnstalleerd. Voordat u besturingssysteemfilters, woordonderbrekers en stemmers kunt gebruiken, moet u deze in de serverinstantie laden als volgt:

EXECUTE sp_fulltext_service
    @action = 'load_os_resources',
    @value = 1;

Als u een volledige-tekstindex wilt maken op een varbinary(max) kolom, moet de Full-Text Engine toegang hebben tot de bestandsextensies van de documenten in de varbinary(max) kolom. Je moet deze informatie opslaan in een tabelkolom, een zogenaamde typekolom, die je koppelt aan de varbinary(max) -kolom in de full-text index. Bij het indexeren van een document gebruikt de Full-Text Engine de bestandsextensie in de typekolom om te bepalen welk filter moet worden gebruikt.

XML-gegevens indexeren

Een kolom met xml- gegevenstype slaat alleen XML-documenten en -fragmenten op en alleen het XML-filter wordt gebruikt voor de documenten. Daarom is een typekolom niet nodig. In xml- kolommen indexeert de volledige-tekstindex de inhoud van de XML-elementen, maar negeert de XML-opmaak. Kenmerkwaarden zijn geïndexeerd in volledige tekst, tenzij ze numerieke waarden zijn. Elementtags worden gebruikt als tokengrenzen. Goed opgemaakte XML- of HTML-documenten en -fragmenten met meerdere talen worden ondersteund.

Raadpleeg Volledige-tekstzoekopdrachten gebruiken met XML-kolommen voor meer informatie over indexeren en query's uitvoeren op een xml-kolom.

Indexering in volledige tekst voor een tabel uitschakelen of opnieuw inschakelen

In de Database Engine zijn alle door gebruikers gemaakte databases standaard full-text ingeschakeld. Daarnaast wordt een afzonderlijke tabel automatisch ingeschakeld voor indexering in volledige tekst zodra er een volledige-tekstindex wordt gemaakt en er een kolom aan de index wordt toegevoegd. Een tabel wordt automatisch uitgeschakeld voor indexering in volledige tekst wanneer de laatste kolom wordt verwijderd uit de volledige-tekstindex.

Op een tabel met een full-text index kun je handmatig een tabel voor full-text indexering uitschakelen of opnieuw inschakelen met behulp van SQL Server Management Studio.

  1. Vouw de servergroep uit, vouw Databasesuit en vouw de database uit die de tabel bevat die u wilt inschakelen voor indexering in volledige tekst.

  2. Vouw tabellenuit en klik met de rechtermuisknop op de tabel die u wilt uitschakelen of opnieuw inschakelen voor indexering in volledige tekst.

  3. Selecteer Full-Text indexen selecteer Full-Text index uitschakelen of Full-Text indexinschakelen.

Een volledige-tekstindex uit een tabel verwijderen

  1. Klik in Objectverkenner met de rechtermuisknop op de tabel met de volledige-tekstindex die u wilt verwijderen.

  2. Selecteer verwijder Full-Text index.

  3. Wanneer u hierom wordt gevraagd, selecteert u OK om te bevestigen dat u de volledige tekstindex wilt verwijderen.