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
Verandert de eigenschappen van een full-text index in SQL Server.
Transact-SQL syntaxis-conventies
Syntaxis
ALTER FULLTEXT INDEX ON table_name
{ ENABLE
| DISABLE
| SET CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF }
| ADD ( column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ]
[ STATISTICAL_SEMANTICS ]
[ , ...n ]
)
[ WITH NO POPULATION ]
| ALTER COLUMN column_name
{ ADD | DROP } STATISTICAL_SEMANTICS
[ WITH NO POPULATION ]
| DROP ( column_name [ , ...n ] )
[ WITH NO POPULATION ]
| START { FULL | INCREMENTAL | UPDATE } POPULATION
| { STOP | PAUSE | RESUME } POPULATION
| SET STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
[ WITH NO POPULATION ]
| SET SEARCH PROPERTY LIST [ = ] { OFF | property_list_name }
[ WITH NO POPULATION ]
}
[ ; ]
Arguments
table_name
De naam van de tabel of geïndexeerde weergave die de kolom of kolommen bevat die in de full-text index zijn opgenomen. Het specificeren van database- en tabeleigenaarnamen is optioneel.
INSCHAKELEN | UITSCHAKELEN
Vertelt SQL Server of volledige tekstindexgegevens voor table_name verzameld moeten worden. ENABLE activeert de full-text index; DISABLE schakelt de volledige tekstindex uit. De tabel ondersteunt geen volledige tekstzoekopdrachten zolang de index is uitgeschakeld.
Door een full-text index uit te schakelen, kun je wijzigingstracking uitschakelen, maar behoud je de full-text index, die je op elk moment opnieuw kunt activeren met ENABLE. Wanneer de full-text index is uitgeschakeld, blijft de full-text index metadata in de systeemtabellen. Als CHANGE_TRACKING in de ingeschakelde toestand is (automatisch of handmatig bijgewerkt) wanneer de volledige tekstindex is uitgeschakeld, bevriest de status van de index, stopt het doorlopende crawl en worden nieuwe wijzigingen in de tabelgegevens niet gevolgd of doorgegeven aan de index.
SET CHANGE_TRACKING { HANDMATIG | AUTO | OFF }
Specificeert of wijzigingen (updates, verwijderingen of inserts) die zijn aangebracht in tabelkolommen die door de full-text index worden bedekt, door SQL Server naar de full-text index worden doorgegeven. Datawijzigingen via WRITETEXT en UPDATETEXT worden niet weergegeven in de full-text index en worden niet opgepikt met wijzigingstracking.
Opmerking
Voor meer informatie, zie Interacties van Veranderingstracking en GEEN POPULATIEPARAMETER.
HANDMATIG
Specificeert dat de gevolgde wijzigingen handmatig worden doorgegeven door de ALTER FULLTEXT INDEX ... START UPDATE POPULATION Transact-SQL statement (handmatige populatie). U kunt SQL Server Agent gebruiken om deze Transact-SQL instructie periodiek aan te roepen.
AUTO
Specificeert dat de gevolgde wijzigingen automatisch worden doorgegeven wanneer gegevens in de basistabel worden aangepast (automatische populatie). Hoewel wijzigingen automatisch worden doorgegeven, worden deze wijzigingen mogelijk niet direct weergegeven in de volledige tekstindex. AUTO is de standaard.
OFF
Geeft aan dat SQL Server geen lijst bijhoudt met wijzigingen in de geïndexeerde data.
ADD | LAAT column_name
Specificeert de kolommen die toegevoegd of verwijderd moeten worden uit een volledige tekstindex. De kolom of kolommen moeten van het type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary of varbinary(max) zijn.
Gebruik de DROP-clausule alleen op kolommen die eerder zijn ingeschakeld voor full-text indexering.
Gebruik TYPE COLUMN en LANGUAGE met de ADD-clausule om deze eigenschappen op de column_name in te stellen. Wanneer een kolom wordt toegevoegd, moet de volledige tekstindex in de tabel opnieuw worden ingevuld om volledige tekstzoekopdrachten tegen deze kolom te laten werken.
Opmerking
Of de full-text index wordt gevuld nadat een kolom is toegevoegd of verwijderd uit een full-text index, hangt af van of change-tracking is ingeschakeld en of ZONDER POPULATIE is gespecificeerd. Voor meer informatie, zie Interacties van Veranderingstracking en GEEN POPULATIEPARAMETER.
TYPE KOLOM type_column_name
Geeft de naam aan van een tabelkolom, type_column_name, die wordt gebruikt om het documenttype voor een varbinary, varbinary(max)- of afbeeldingsdocument te bevatten. Deze kolom, bekend als de typekolom, bevat een door de gebruiker opgegeven bestandsextensie (.doc, .pdf, .xls, enzovoort). De typekolom moet van type char, nchar, varchar of nvarchar zijn.
Specificeer TYPE COLUMN type_column_name alleen als column_name een kolom varbinair, varbinair(max) of afbeelding specificeert, waarin gegevens als binaire data worden opgeslagen; anders geeft SQL Server een foutmelding terug.
Opmerking
Tijdens indexering gebruikt de Full-Text Engine de afkorting in de typekolom van elke tabelrij om te bepalen welk full-text zoekfilter gebruikt moet worden voor het document in column_name. Het filter laadt het document als een binaire stroom, verwijdert de opmaakinformatie en stuurt de tekst van het document naar de woordbrekercomponent. Zie Filters configureren en beheren voor zoeken voor meer informatie.
TAAL language_term
De taal van de gegevens die in column_name zijn opgeslagen.
language_term is optioneel en kan worden gespecificeerd als een string, geheel getal of hexadecimale waarde die overeenkomt met de locale identifier (LCID) van een taal. Als language_term is opgegeven, wordt de taal die wordt opgegeven, toegepast op alle elementen van de zoekvoorwaarde. Als er geen waarde is gespecificeerd, wordt de standaard full-text taal van de SQL Server-instantie gebruikt.
Gebruik de sp_configure opgeslagen procedure om informatie te benaderen over de standaard full-text taal van de SQL Server-instantie.
Wanneer gespecificeerd als een string, komt language_term overeen met de alias kolomwaarde in de sys.syslanguages systeemtabel. De tekenreeks moet tussen enkele aanhalingstekens staan, zoals in 'language_term'. Wanneer dit is opgegeven als een geheel getal, is language_term de werkelijke LCID die de taal identificeert. Wanneer gespecificeerd als een hexadecimale waarde, is language_term 0x gevolgd door de hexadecimale waarde van de LCID. De hex-waarde mag niet hoger zijn dan acht cijfers, inclusief voorste nullen.
Als de waarde de DBCS-indeling (Double-Byte Character Set) heeft, wordt deze door SQL Server geconverteerd naar Unicode.
Bronnen, zoals woordbrekers en stemmers, moeten ingeschakeld zijn voor de als language_term gespecificeerde taal. Als dergelijke bronnen de opgegeven taal niet ondersteunen, geeft SQL Server een foutmelding.
Voor niet-BLOB- en niet-XML-kolommen die tekstgegevens in meerdere talen bevatten, of voor gevallen waarin de taal van de tekst in de kolom onbekend is, gebruik je de neutrale (0x0) taalbron. Voor documenten die zijn opgeslagen in XML- of BLOB-kolommen wordt de taalcodering binnen het document gebruikt tijdens indexering. Bijvoorbeeld, in XML-kolommen identificeert het xml:lang attribuut in XML-documenten de taal. Bij het querymoment wordt de eerder in language_term gespecificeerde waarde de standaardtaal die wordt gebruikt voor full-text query's, tenzij language_term als onderdeel van een full-text query wordt opgegeven.
STATISTICAL_SEMANTICS
Van toepassing op: SQL Server 2012 (11.x) en latere versies.
Maakt de extra sleutelzin- en documentovereenkomstindexen die deel uitmaken van statistische semantische indexering. Zie Semantic Search (SQL Server)voor meer informatie.
[ , ... n ]
Geeft aan dat meerdere kolommen kunnen worden gespecificeerd voor de ADD-, ALTER- of DROP-clausules. Wanneer meerdere kolommen zijn gespecificeerd, scheid deze kolommen dan met komma's.
ZONDER BEVOLKING
Specificeert dat de volledige tekstindex niet wordt gevuld na een ADD of DROP kolomoperatie of een SET STOPLIST-operatie. De index wordt alleen ingevuld als de gebruiker een START uitvoert... BEVOLKINGSCOMMANDO.
Wanneer GEEN POPULATIE is gespecificeerd, vult SQL Server geen index in. De index wordt pas gevuld nadat de gebruiker een ALTER FULLTEXT INDEX... START HET POPULATION COMMAND. Wanneer GEEN POPULATIE is gespecificeerd, vult SQL Server de index in.
Als CHANGE_TRACKING is ingeschakeld en ZONDER POPULATIE wordt opgegeven, geeft SQL Server een foutmelding. Als CHANGE_TRACKING is ingeschakeld en ZONDER POPULATIE niet is gespecificeerd, voert SQL Server een volledige populatie uit op de index.
Opmerking
Voor meer informatie, zie Interacties van Veranderingstracking en GEEN POPULATIEPARAMETER.
{ADD | DROP } STATISTICAL_SEMANTICS
Van toepassing op: SQL Server 2012 (11.x) en latere versies.
Schakelt statistische semantische indexering voor de opgegeven kolommen in of schakelt uit. Zie Semantic Search (SQL Server)voor meer informatie.
START { VOLLEDIG | INCREMENTEEL | UPDATE } BEVOLKING
Vertelt SQL Server om te beginnen met de populatie van de full-text index van table_name. Als er al een full-text indexpopulatie in gang is, geeft SQL Server een waarschuwing terug en start geen nieuwe populatie.
VOLLEDIG
Specificeert dat elke rij van de tabel wordt opgehaald voor volledige tekstindexering, zelfs als de rijen al zijn geïndexeerd.
INCREMENTAL
Specificeert dat alleen de gewijzigde rijen sinds de laatste populatie worden opgehaald voor volledige tekstindexering. INCREMENTAL kan alleen worden toegepast als de tabel een kolom van het type tijdstempel heeft. Als een tabel in de full-text catalogus geen kolom met het type tijdstempel bevat, ondergaat de tabel een VOLLEDIGE populatie.
UPDATE
Specificeert de verwerking van alle inserties, updates of verwijderingen sinds de laatste keer dat de change-tracking index werd bijgewerkt. Wijzigingstracking populatie moet ingeschakeld zijn in een tabel, maar de achtergrondupdate-index of de automatische wijzigingstracking mag niet ingeschakeld zijn.
{STOP | PAUZE | CV } BEVOLKING
Stopt of pauzeert elke populatie in uitvoering; of stopt of hervat een gepauzeerde populatie.
STOP POPULATION stopt geen automatische wijzigingstracking of achtergrondupdate-index. Om het bijhouden van veranderingen te stoppen, gebruik je SET CHANGE_TRACKING OFF.
PAUZE POPULATIE en HERVAT BEVOLKING kunnen alleen worden gebruikt voor volledige populaties. Ze zijn niet relevant voor andere populatietypen omdat de andere populaties weer kruipen vanaf waar de kruipgang stopte.
STOPLIJST INGESTELD { OFF | SYSTEEM | stoplist_name }
Verandert de volledige tekststoplijst die aan de index is gekoppeld, indien aanwezig.
OFF
Specificeert dat er geen stoplijst is gekoppeld aan de volledige tekstindex.
SYSTEM
Specificeert dat het standaard full-text systeem STOPLIST gebruikt moet worden voor deze full-text index.
stoplist_name
Specificeert de naam van de stoplijst die aan de volledige tekstindex gekoppeld moet worden.
Voor meer informatie, zie Stopwords en Stoplists configureren en beheren voor Full-Text zoeken.
ZET SEARCH PROPERTY LIST { OFF | property_list_name } [ ZONDER BEVOLKING ]
Van toepassing op: SQL Server 2012 (11.x) en latere versies.
Wijzigt de zoekeigenschapslijst die aan de index is gekoppeld, indien aanwezig.
OFF
Specificeert dat er geen property list is gekoppeld aan de full-text index. Wanneer je de zoekproperty list van een full-text index (
ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF) uitschakelt, is property-zoeken op de basistabel niet langer mogelijk.Standaard wordt de full-text index automatisch opnieuw gevuld wanneer je een bestaande zoekeigenschapslijst uitschakelt. Als je ZONDER BEVOLKING aangeeft bij het uitschakelen van de zoekproperty lijst, vindt automatische herbevolking geen plaats. We raden echter aan om uiteindelijk een volledige populatie op deze full-text index te draaien, wanneer het jou uitkomt. Het opnieuw invullen van de full-text index verwijdert de property-specifieke metadata van elke verwijderde zoekeigenschap, waardoor de full-text index kleiner en efficiënter wordt.
property_list_name
Specificeert de naam van de zoekeigenschapslijst die aan de full-text index gekoppeld moet worden.
Het toevoegen van een zoekeigenschapslijst aan een volledige tekstindex vereist het opnieuw aanvullen van de index om de zoekeigenschappen te indexeren die geregistreerd zijn voor de bijbehorende zoekeigenschapslijst. Als je bij het toevoegen van de zoekproperty lijst MET GEEN POPULATIE specificeert, moet je op het juiste moment een populatie op de index uitvoeren.
Belangrijk
Als de full-text index eerder aan een andere zoekopdracht was gekoppeld, moet deze property list opnieuw worden opgebouwd om de index in een consistente staat te brengen. De index wordt onmiddellijk afgekapt en blijft leeg totdat de volledige populatie is afgerond. Voor meer informatie, zie Het wijzigen van de zoekeigenschapslijst veroorzaakt het herbouwen van de index.
Opmerking
Je kunt een bepaalde zoekpropertylijst koppelen aan meer dan één full-text index in dezelfde database.
Vind de zoekeigenschappenlijsten in de huidige database
Voor meer informatie over het zoeken van woninglijsten, zie Zoek documentenpanden met zoek in vastgoedlijsten.
Opmerkingen
Op xml-kolommen kun je een full-text index maken die de inhoud van de XML-elementen indexeert, maar de XML-opmaak negeert. Attribuutwaarden worden full-text geïndexeerd, tenzij het numerieke waarden zijn. Elementtags worden gebruikt als tokengrenzen. Goed gevormde XML- of HTML-documenten en fragmenten met meerdere talen worden ondersteund. Zie Full-Text Zoeken met XML-kolommen gebruiken voor meer informatie.
We raden aan dat de indexsleutelkolom een geheel datatype is. Dit biedt optimalisaties tijdens de uitvoering van de query.
ALTER FULLTEXT INDEX kan niet binnen een gebruikerstransactie worden geplaatst. Deze verklaring moet in een eigen impliciete transactie worden uitgevoerd.
Voor meer informatie over full-text indexen, zie Create and Manage Full-Text Indexes.
Interacties van veranderingtracking en NO POPULATION-parameter
Of de full-text index is gevuld hangt af van of change-tracking is ingeschakeld en of ZONDER POPULATIE is gespecificeerd in de ALTER FULLTEXT INDEX-instructie. De volgende tabel vat het resultaat van hun interactie samen.
| Wijzigingen bijhouden | ZONDER BEVOLKING | Resultaat |
|---|---|---|
| Niet ingeschakeld | Niet opgegeven | Een volledige populatie wordt uitgevoerd op de index. |
| Niet ingeschakeld | Gespecificeerd | Er komt geen populatie van de index voor totdat een ALTER FULLTEXT INDEX... START BEVOLKINGSVERKLARING wordt uitgegeven. |
| Ingeschakeld | Gespecificeerd | Er wordt een fout geactiveerd en de index wordt niet gewijzigd. |
| Ingeschakeld | Niet opgegeven | Een volledige populatie wordt uitgevoerd op de index. |
Voor meer informatie over het invullen van volledige tekstindexen, zie Populate Full-Text Indexes.
Het wijzigen van de zoekeigenschapslijst veroorzaakt het herbouwen van de index
De eerste keer dat een full-text index wordt gekoppeld aan een zoekpropertylijst, moet de index opnieuw worden ingevuld om property-specifieke zoektermen te indexeren. De bestaande indexgegevens zijn niet ingekort.
Als je echter de full-text index koppelt aan een andere property list, wordt de index opnieuw opgebouwd. Herbouwen kortte onmiddellijk de volledige tekstindex af, verwijderde alle bestaande data en de index moest opnieuw worden invuld. Terwijl de populatie vordert, zoeken full-text queries op de basistabel alleen op de tabelrijen die al door de populatie zijn geïndexeerd. De opnieuw ingevulde indexgegevens bevatten metadata van de geregistreerde eigenschappen van de nieuw toegevoegde zoekfunctielijst.
Scenario's die herbouw veroorzaken zijn onder andere:
Schakel direct over naar een andere zoekproperty list (zie "Scenario A," later in deze sectie).
Schakel de zoekeigenschapslijst uit en koppel de index later aan een willekeurige zoekeigenschapslijst (zie "Scenario B," later in deze sectie).
Opmerking
Voor meer informatie over hoe full-text zoeken werkt met search property lists, zie Search Document Properties with Search Property Lists. Voor informatie over volledige populaties, zie Populate Full-Text Indexes.
Scenario A: Schakel direct over naar een andere zoekpropertylijst
Een volledige tekstindex wordt aangemaakt op
table_1met een zoekeigenschapslijstspl_1:CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index WITH SEARCH PROPERTY LIST=spl_1, CHANGE_TRACKING OFF, NO POPULATION;Een volledige populatie wordt uitgevoerd op de volledige tekstindex:
ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;De full-text index wordt later gekoppeld aan een andere zoekeigenschapslijst,
spl_2, met de volgende stelling:ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;Deze uitspraak veroorzaakt een volledige populatie, het standaardgedrag. Voordat deze populatie begint, korten de Full-Text Engine de index echter automatisch af.
Scenario B: Schakel de zoekpropertylijst uit en koppel later de index aan elke zoekpropertylijst
Een full-text index wordt aangemaakt
table_1met een zoekeigenschapslijstspl_1, gevolgd door een automatische volledige populatie (het standaardgedrag):CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index WITH SEARCH PROPERTY LIST=spl_1;De zoekproperty list is als volgt uitgeschakeld:
ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;De full-text index is opnieuw gekoppeld aan dezelfde zoekproperty list of een andere.
Bijvoorbeeld, de volgende instructie verbindt de volledige tekstindex opnieuw met de oorspronkelijke zoek-eigenschapslijst,
spl_1:ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;Deze uitspraak start een volledige populatie, het standaardgedrag.
Opmerking
De herbouw zou ook vereist zijn voor een andere zoekproperty list, zoals
spl_2.
Permissions
De gebruiker moet ALTER-toestemming hebben voor de tabel of geïndexeerde weergave, of lid zijn van de sysadmin vaste serverrol, of de db_ddladmin of db_owner vaste databaserollen.
Als SET STOPLIST is gespecificeerd, moet de gebruiker REFERENTIES-toestemming hebben op de stoplist. Als SET SEARCH PROPERTY LIST is gespecificeerd, moet de gebruiker REFERENTIES-toestemming hebben op de zoekpropertylijst. De eigenaar van de opgegeven stoplist of zoekpropertylijst kan REFERENTIES-toestemming verlenen, mits de eigenaar VOLLEDIGE TEKSTCATALOG WIJZIGEN-rechten heeft.
Opmerking
Het publiek krijgt REFERENTIES-toestemming voor de standaard stoplist die met SQL Server wordt geleverd.
Voorbeelden
Eén. Stel handmatige wijzigingstracking in
Het volgende voorbeeld zet handmatige wijzigingstracking in op de full-text index in de JobCandidate tabel.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
SET CHANGE_TRACKING MANUAL;
GO
B. Koppel een property list aan een volledige tekstindex
Van toepassing op: SQL Server 2012 (11.x) en latere versies.
Het volgende voorbeeld koppelt de DocumentPropertyList property list aan de volledige tekstindex in de Production.Document tabel. Deze ALTER FULLTEXT INDEX-instructie start een volledige populatie, wat het standaardgedrag is van de SET SEARCH PROPERTY LIST-clausule.
Opmerking
Voor een voorbeeld dat de DocumentPropertyList property list aanmaakt, zie CREATE SEARCH PROPERTY LIST (Transact-SQL).
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
SET SEARCH PROPERTY LIST DocumentPropertyList;
GO
C. Verwijder een zoekproperty lijst
Van toepassing op: SQL Server 2012 (11.x) en latere versies.
Het volgende voorbeeld verwijdert de DocumentPropertyList property list uit de full-text index op de Production.Document. In dit voorbeeld is er geen haast om de eigendommen uit de index te verwijderen, dus wordt de optie ZONDER BEVOLKING gespecificeerd. Echter, zoeken op eigendomsniveau is niet langer toegestaan tegen deze volledige tekstindex.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
GO
D. Start een volledige populatie
Het volgende voorbeeld start een volledige populatie op de volledige tekstindex in de JobCandidate tabel.
USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
START FULL POPULATION;
GO