Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure 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-.
Vouw in SQL Server Management Studio in Objectverkenner de server uit.
Vouw Databasesuit en vouw vervolgens de database met de volledige-tekstindex uit.
Vouw tabellenuit.
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 .
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 Eigenschappenlijstkolommen 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).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.
Vouw de servergroep uit, vouw Databasesuit en vouw de database uit die de tabel bevat die u wilt inschakelen voor indexering in volledige tekst.
Vouw tabellenuit en klik met de rechtermuisknop op de tabel die u wilt uitschakelen of opnieuw inschakelen voor indexering in volledige tekst.
Selecteer Full-Text indexen selecteer Full-Text index uitschakelen of Full-Text indexinschakelen.
Een volledige-tekstindex uit een tabel verwijderen
Klik in Objectverkenner met de rechtermuisknop op de tabel met de volledige-tekstindex die u wilt verwijderen.
Selecteer verwijder Full-Text index.
Wanneer u hierom wordt gevraagd, selecteert u OK om te bevestigen dat u de volledige tekstindex wilt verwijderen.