Megosztás a következőn keresztül:


TELJES SZÖVEG INDEXÉNEK MÓDOSÍTÁSA (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Megváltoztatja a teljes szöveges index tulajdonságait az SQL Serverben.

Transact-SQL szintaxis konvenciók

Szemantika

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

A tábla vagy indexelt nézet neve, amely tartalmazza a teljes szöveges indexben szereplő oszlopot vagy oszlopokat. Az adatbázis és tábla tulajdonosneveinek megadása opcionális.

ENGEDÉLYEZÉS | LETILT

Megmondja az SQL Servernek, hogy gyűjtsék-e teljes szöveges indexadatokat table_name számára. Az ENABLE aktiválja a teljes szöveges indexet; A DISABLE kikapcsolja a teljes szöveges indexet. A tábla nem támogatja a teljes szöveges lekérdezéseket, amíg az index le van tiltva.

A teljes szöveges index kikapcsolásával kikapcsolhatod a változáskövetést, de megtartod a teljes szöveges indexet, amit bármikor újraaktiválhatsz az ENENABLE használatával. Amikor a teljes szöveges index letiltásra kerül, a teljes szöveges index metaadat a rendszer tábláiban marad. Ha CHANGE_TRACKING engedélyezett állapotban van (automatikus vagy manuális frissítés), amikor a teljes szöveges index letiltva, az index állapota lefagy, a folyamatos benyomás megszűnik, és az új táblázat adataiban történt változások nem kerülnek nyomon vagy továbbításra kerülnek az indexbe.

SET CHANGE_TRACKING { MANUAL | AUTO | LE }

Megadja, hogy a teljes szöveges index által lefedett táblázatoszlopokban végrehajtott változtatásokat (frissítések, törlések vagy beillesztéseket) az SQL Server továbbítja-e a teljes szöveges indexbe. A WRITETEXT és UPDATETEXT adatváltozásai nem jelennek meg a teljes szöveges indexben, és nem veszik fel őket a változáskövetéssel.

Megjegyzés:

További információért lásd: Változáskövetés és NINCS NÉPESSÉGPARAMÉTER interakciói.

  • KÉZIKÖNYV

    Megadja, hogy a nyomon követett változásokat manuálisan továbbítsák az ALTER FULLTEXT INDEX ... hívással START UPDATE populáció Transact-SQL állítás (manuális népesség). Az SQL Server Agent használatával rendszeresen meghívhatja ezt a Transact-SQL utasítást.

  • AUTO

    Megadja, hogy a nyomon követett változások automatikusan terjednek, ahogy az adatok az alaptáblában (automatikus népesség) módosítódnak. Bár a változások automatikusan terjednek, ezek a változások nem feltétlenül jelennek meg azonnal a teljes szöveges indexben. Az AUTO az alapértelmezett.

  • KI

    Megadja, hogy az SQL Server nem tart listát az indexelt adatokon történt változásokról.

ADD | DOBD column_name

Megadja azokat az oszlopokat, amelyeket hozzáadni vagy törölni kell egy teljes szöveges indexből. Az oszlopnak vagy oszlopoknak char,varchar, nchar, nvarchar, text, ntext, image, xml, varbinary vagy varbinary(max) típusúnak kell lenniük.

A DROP záradékot csak azokon az oszlopokon használd, amelyeket korábban engedélyeztek teljes szöveges indexelésre.

Használd a TYPE COLUMN és LANGUAGE jeleket az ADD klauzulával ezek a tulajdonságok beállításához a column_name-n. Amikor egy oszlopot hozzáadnak, a táblázat teljes szöveges indexét újra kell tölteni, hogy a teljes szöveges lekérdezések működhessenek ehhez az oszlophoz.

Megjegyzés:

Az, hogy a teljes szöveges index megjelenik-e egy oszlop hozzáadása után vagy kihagyása a teljes szöveges indexből, attól függ, hogy engedélyezett-e a változáskövetés, és hogy a WITH NO POPULATION meg van-e jelölve. További információért lásd: Változáskövetés és NINCS NÉPESSÉGPARAMÉTER interakciói.

TÍPUSOSZLOP type_column_name

Megadja egy táblaoszlop nevét, type_column_name, amely a varbinary, varbinary(max) vagy kép dokumentum dokumentumtípusának tárolására szolgál. Ez az oszlop, amelyet típusoszlopnak neveznek, tartalmaz egy felhasználó által biztosított fájlkiterjesztést (.doc, .pdf, .xls, és így tovább). A típusoszlopnak char,nchar, varchar vagy nvarchar típusúnak kell lennie.

A TYPE COLUMN type_column_name csak akkor adjuk meg, ha column_nameegy varbináris, varbinary(max) vagy képoszlopot jelöl, amelyben az adatok bináris adatként tárolódnak; ellenkező esetben az SQL Server hibát ad vissza.

Megjegyzés:

Indexeléskor a Full-Text Engine minden táblázatsorban a típusoszlopban lévő rövidítést használja, hogy meghatározza a column_name-es dokumentumhoz használt teljes szöveges keresési szűrőt. A szűrő bináris folyamként tölti be a dokumentumot, eltávolítja a formázási információkat, és a szöveget a dokumentumból a szómegszakító komponenshez küldi. További információ: Keresés szűrőinek konfigurálása és kezelése.

NYELVI language_term

Az adat nyelve, amelyet column_name-ben tárolnak.

language_term opcionális, és megadható stringként, egész számban vagy hexadecimális értékként, amely megfelel egy nyelv helyi azonosítójának (LCID). Ha language_term van megadva, a rendszer az általa képviselt nyelvet alkalmazza a keresési feltétel minden elemére. Ha nincs megadva érték, akkor az SQL Server példány alapértelmezett teljes szöveges nyelvét használják.

A sp_configure tárolt eljárást használd az SQL Server példány alapértelmezett teljes szöveges nyelvének információihoz.

Ha karakterláncként van megadva, language_term megfelel a alias rendszertábla oszlopértékének sys.syslanguages . A sztringet idézőjelek közé kell foglalni, ahogyan a "language_term" kifejezésben is szerepel. Ha egész számként van megadva, language_term a nyelvet azonosító tényleges LCID. Ha hatdexeltizedes értékként van megadva, language_term 0x, majd az LCID hatszögértéke. A hex érték nem haladhatja meg a nyolc számjegyet, beleértve a vezető nullákat is.

Ha az érték kétbájtos karakterkészlet (DBCS) formátumban van, az SQL Server Unicode-ra konvertálja.

Az erőforrásokat, mint például a szótörők és a szárnyszerek, engedélyezni kell a language_term-ként megadott nyelvhez. Ha ezek az erőforrások nem támogatják a megadott nyelvet, az SQL Server hibát ad vissza.

Nem BLOB és nem XML oszlopok esetén, amelyek több nyelven tartalmaznak szövegadatokat, vagy ha az oszlopban tárolt szöveg nyelve ismeretlen, használjuk a semleges (0x0) nyelvi forrást. XML vagy BLOB típusú oszlopokban tárolt dokumentumok esetén a dokumentumban belüli nyelvkódolást használják az indexeléskor. Például XML oszlopokban az XML dokumentumokban az xml:lang attribútum azonosítja a nyelvet. A lekérdezés idején a language_term-ben korábban megadott érték lesz alapértelmezett nyelv a teljes szöveges lekérdezésekhez, kivéve, ha language_term teljes szöveges lekérdezés részeként van megadva.

STATISTICAL_SEMANTICS

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.

Létrehozza a statisztikai szemantikai indexeléshez tartozó további kulcskifejezéseket és dokumentálja a hasonlósági indexeket. További információ: Szemantikai keresés (SQL Server).

[ , ... n ]

Jelzi, hogy több oszlop is megadható az ADD, ALTER vagy DROP klauzulákhoz. Ha több oszlopot jelölünk meg, ezeket vesszővel válasszuk szét.

LAKOSSÁG NÉLKÜL

Megadja, hogy a teljes szöveges index nem lesz töltve egy ADD vagy DROP oszlopművelet vagy egy SET STOPLIST művelet után. Az index csak akkor jelenik meg, ha a felhasználó végrehajt egy START... NÉPESSÉGPARANCSNOKSÁG.

Ha NINCS NÉPESSÉG, az SQL Server nem tölt fel indexet. Az index csak akkor jelenik meg, ha a felhasználó megadja a ALTER FULL TEXT INDEX... INDÍTSD el a NÉPESSÉG parancsot. Ha nincs megadva, hogy NINCS NÉPESSÉG, az SQL Server feltölti az indexet.

Ha CHANGE_TRACKING engedélyezve van, és NINCS POPULÁCIÓ megadva, az SQL Server hibát ad vissza. Ha CHANGE_TRACKING engedélyezve, és NINCS NÉPESSÉG megadva, az SQL Server teljes populációt végez az indexen.

Megjegyzés:

További információért lásd: Változáskövetés és NINCS NÉPESSÉGPARAMÉTER interakciói.

{ADD | DOBJ LE STATISTICAL_SEMANTICS

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.

Engedélyezi vagy tiltja a statisztikai szemantikai indexelést a megadott oszlopokhoz. További információ: Szemantikai keresés (SQL Server).

START { FULL | FOKOZATOS | FRISSÍTÉS } NÉPESSÉG

Megmondja az SQL Servert, hogy kezdje el a table_name teljes szöveges indexének populációját. Ha már teljes szöveges indexpopuláció folyamatban van, az SQL Server figyelmeztetést ad vissza, és nem indít új populációt.

  • TELJES

    Megadja, hogy a tábla minden sora teljes szöveges indexeléshez vissza is kerül, még akkor is, ha a sorok már indexeltek.

  • INCREMENTAL

    Megadja, hogy csak az utolsó populáció óta módosított sorokat kérjenek vissza teljes szöveges indexeléshez. Az INCREMENTAL csak akkor alkalmazható, ha a táblának van egy oszlopa az időbélyegből. Ha a teljes szöveges katalógusban található táblázat nem tartalmazza a betűs időbélyeg oszlopát, akkor a tábla TELJES populáción megy keresztül.

  • Frissítés

    Megadja az összes behelyezés, frissítés vagy törlés feldolgozását a változáskövető index utolsó frissítése óta. A változáskövetést egy táblán be kell kapcsolni, de a háttérfrissítési index vagy az automatikus változáskövetés nem szabad bekapcsolni.

{STOP | SZÜNET | RESUME } NÉPESSÉG

Megállítja vagy megállítja a folyamatban lévő populációt; vagy megállítja vagy folytatja a megszünetelt populációt.

A STOP POPULATION nem állítja meg az automatikus változáskövetést vagy a háttérfrissítések indexét. A követés megállításához használd a SET CHANGE_TRACKING OFF gombot.

A SZÜNETES NÉPESSÉG ÉS AZ ÖNÉLETRAJZ NÉPESSÉG CSAK TELJES NÉPESSÉGRE HASZNÁLHATÓ. Más populációtípusok számára nem relevánsak, mert a többi populáció onnan folytatja a kúszást, ahol a kúszás megállt.

ÁLLÍTSON STOPLISTA { OFF | RENDSZER | stoplist_name }

Megváltoztatja az indexhez tartozó teljes szöveges stoplistát, ha van.

  • KI

    Megadja, hogy nincs stoplista a teljes szöveges indexhez kötve.

  • SYSTEM

    Megadja, hogy ehhez a teljes szöveges indexhez az alapértelmezett teljes szöveges rendszer, a STOPLIST-et kell használni.

  • stoplist_name

    Megadja a teljes szöveges indexhez társítandó stoplista nevét.

További információkért lásd: Stopwords és Stoplists konfigurálása és kezelése a Full-Text Kereséshez.

BEÁLLÍTÁS KERESÉSI TULAJDONSÁGLISTA { OFF | property_list_name } [ LAKOSSÁG NÉLKÜL ]

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.

Megváltoztatja az indexhez kapcsolódó keresési tulajdonságlistát, ha van.

  • KI

    Megadja, hogy nincs tulajdonságlista a teljes szöveges indexhez kötve. Amikor kikapcsolod egy teljes szöveges index (ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF), keresési tulajdonságlistáját az alaptáblán már nem lehetséges.

    Alapértelmezettben, amikor kikapcsolsz egy meglévő kereső tulajdonságlistát, a teljes szöveges index automatikusan újratöltődik. Ha megadod a NINCS NÉPESSÉGET a keresési tulajdonságlista kikapcsoláskor, automatikus újranépesítés nem történik meg. Ugyanakkor javasoljuk, hogy végül a teljes populációt futtatja le ezen a teljes szöveges indexen, amikor a saját igényei szerint szolgálnak. A teljes szöveges index újratöltése eltávolítja minden kihagyott keresési tulajdonság tulajdonság-specifikus metaadatait, így a teljes szöveges index kisebb és hatékonyabb lesz.

  • property_list_name

    Megadja a keresési tulajdonságlista nevét, amelyet a teljes szöveges indexhez kell társítani.

    Egy keresési tulajdonságlista hozzáadása egy teljes szövegű indexhez újra kell tölteni az indexet, hogy indexeljük azokat a keresési tulajdonságokat, amelyek a hozzá tartozó keresési tulajdonságlistához regisztráltak. Ha megadod a WITH NO POPULATION opciót a keresési tulajdonságlista hozzáadásakor az indexen, megfelelő időpontban kell futtatnod egy populációt.

Fontos

Ha a teljes szöveges index korábban egy másik kereséshez volt kötve, akkor újra kell építeni a tulajdonságlistát, hogy az index következetes állapotba kerüljön. Az indexet azonnal lerövidítik, és üres marad, amíg a teljes népesség nem fut. További információért lásd: A keresési tulajdonságok listájának megváltoztatása az index újraépítésének okok.

Megjegyzés:

Egy adott keresési tulajdonságlistát több teljes szöveges indexhez lehet társítani ugyanabban az adatbázisban.

Keresd meg a kereső tulajdonságlistákat a jelenlegi adatbázisban

További információért az ingatlanlistákról lásd: Search Document Properties with Search Property Lists.

Megjegyzések

XML oszlopokon létrehozhatsz egy teljes szöveges indexet, amely indexeli az XML elemek tartalmát, de figyelmen kívül hagyja az XML jelölést. Az attribútumértékek teljes szövegben indexelnek, hacsak nem numerikus értékek. Az elemcímkéket token határként használják. Jól formált XML vagy HTML dokumentumok és több nyelvet tartalmazó töredékek támogatottak. További információ: Full-Text keresés használata XML-oszlopokkal.

Javasoljuk, hogy az indexkulcsoszlop egész számú adattípus legyen. Ez optimalizálást biztosít a lekérdezés végrehajtási idején.

AZ ALTER FULLTEXT INDEX nem helyezhető el felhasználói tranzakcióban. Ezt a kijelentést saját implicit tranzakcióban kell futtatni.

További információért a teljes szöveges indexekről lásd: Létrehozás és Full-Text indexek kezelése.

A változáskövetés és a NINCS POPULÁCIÓ paraméter kölcsönhatásai

Az, hogy a teljes szöveges index fel van-e töltve, attól függ, hogy engedélyezett-e a változáskövetés, és hogy az ALTER FULLTEXT INDEX állításban szerepel-e a WITH NO POPULATION kifejezés. Az alábbi táblázat összefoglalja az interakciójuk eredményét.

Változások követése LAKOSSÁG NÉLKÜL Result
Nincs engedélyezve Nincs megadva Az indexen teljes populációt végeznek.
Nincs engedélyezve Megadott Az index populációja nem jelenik meg, amíg TELJES SZÖVEG INDEXÉNEK MÓDOSÍTÁSA nem történik... Kiadják a START NÉPESSÉGI nyilatkozatot.
Enabled Megadott Hiba keletkezik, és az index nem változik.
Enabled Nincs megadva Az indexen teljes populációt végeznek.

További információért a teljes szövegű indexek feltöltéséről lásd: Fillite Full-Text Indexes.

A keresési tulajdonságlista megváltoztatása miatt újra felépíti az indexet

Amikor először egy teljes szöveges indexet társítanak egy kereső tulajdonságlistához, az indexet újra kell feltölteni, hogy tulajdonságspecifikus keresőszavakat indexeljen. A meglévő indexadatok nincsenek lerövidítve.

Ha azonban a teljes szöveges indexet egy másik tulajdonságlistához társítod, az index újraépül. Az újraépítés azonnal lerövidíti a teljes szöveges indexet, eltávolítva az összes meglévő adatot, és az indexet újra fel kell tölteni. A populáció előrehaladása során a teljes szöveges lekérdezések az alaptáblázatban csak azokon a táblázatsorokban keresnek, amelyeket a populáció már indexelt meg. Az újrahasznosított indexadatok tartalmazzák az újonnan hozzáadott kereső tulajdonságlista regisztrált tulajdonságainak metaadatait.

Az újjáépítést okozó forgatókönyvek a következők:

  • Közvetlenül válts egy másik kereső tulajdonságlistára (lásd a "Scenario A" későbbi részben).

  • Kapcsold ki a keresési tulajdonságlistát, majd társítsd az indexet bármely kereső tulajdonságlistához (lásd a "Scenario B" későbbi részben).

Megjegyzés:

További információért a teljes szöveges keresés tulajdonságaival való keresésről lásd: Search Document Properties with Search Property Lists. A teljes populációk részletéért lásd: Népesség Full-Text indexek.

A forgatókönyv: Közvetlenül egy másik kereső tulajdonságlistára váltani

  1. Teljes szöveges indexet hoznak table_1 létre egy kereső tulajdonságlistával spl_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;
    
  2. A teljes populáció a teljes szöveges indexen fut le:

    ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;
    
  3. A teljes szöveges index később egy másik keresőtulajdonságlistához kapcsolódik, spl_2, az alábbi állítással:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;
    

    Ez a kijelentés teljes népességet eredményez, ami az alapértelmezett viselkedés. Azonban mielőtt elkezdené ezt a populációt, a Full-Text Engine automatikusan lerövidíti az indexet.

B forgatókönyv: Kapcsold ki a kereső tulajdonságlistát, majd később társítsuk az indexet bármely kereső tulajdonságlistához

  1. Teljes szöveges indexet hoznak table_1 létre egy kereső tulajdonságlistával spl_1, majd automatikus teljes populációval (az alapértelmezett viselkedés):

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index
        WITH SEARCH PROPERTY LIST=spl_1;
    
  2. A keresési tulajdonságlista ki van kapcsolva, az alábbiakkal:

    ALTER FULLTEXT INDEX ON table_1
        SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
    
  3. A teljes szöveges index ismét ugyanazzal a keresési tulajdonságlistával vagy egy másik listához van kötve.

    Például a következő állítás újratársítja a teljes szöveges indexet az eredeti keresési tulajdonságlistához: spl_1

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;
    

    Ez a kijelentés indítja el a teljes populációt, az alapértelmezett viselkedést.

    Megjegyzés:

    Az újjáépítés egy másik kereső ingatlanlistához is szükséges lenne, például spl_2.

Permissions

A felhasználónak ALTER jogosultsággal kell rendelkeznie a táblán vagy az indexelt nézeten, vagy tagja kell lennie a rendszergazdálkodó fix szerver szerepének, vagy a db_ddladmin vagy db_owner fix adatbázis szerepének.

Ha a SET STOPLIST meg van jelölve, a felhasználónak REFERENCES engedélyt kell biztosítania a stoplistán. Ha a SET SEARCH PROPERTY LIST meg van jelölve, akkor a felhasználónak REFERENCES engedélyt kell biztosítania a keresési tulajdonságlistán. A megadott stoplist vagy kereső tulajdonságlista tulajdonosa HIVATKOZÁSI engedélyt adhat, ha a tulajdonosnak van ALTER FULL TEXT CATALOG engedélye.

Megjegyzés:

A nyilvánosság HIVATKOZÁSI engedélyt kap az alapértelmezett stop listára, amelyet az SQL Server biztosít.

Példák

A. Állítsd be a kézi váltáskövetést

A következő példa a táblázaton található teljes szöveges indexen kézi JobCandidate változások követését mutatja be.

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   SET CHANGE_TRACKING MANUAL;
GO

B. Társíts egy tulajdonságlistát egy teljes szöveges indexhez

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.

A következő példa a DocumentPropertyList tulajdonságlistát a táblázat teljes szöveges indexéhez Production.Document társítja. Ez az ALTER FULLTEXT INDEX utasítás teljes populációt indít el, ami a SET SEARCH PROPERTY LIST záradék alapértelmezett viselkedése.

Megjegyzés:

A tulajdonságlistát létrehozó példáért DocumentPropertyList lásd: CREATE SEARCH PROPERTY LIST (Transact-SQL) MUTATÓ.

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
   SET SEARCH PROPERTY LIST DocumentPropertyList;
GO

C. Távolítsa el a keresési tulajdonságlistát

A: SQL Server 2012 (11.x) és újabb verziókra vonatkozik.

A következő példa eltávolítja a DocumentPropertyList tulajdonságlistát a teljes szöveges indexből a .Production.Document Ebben a példában nincs sietség a tulajdonságok eltávolításával az indexből, így a NINCS POPULÁCIÓ opció meg van jelölve. Azonban a tulajdonságszintű keresés már hosszabb ideig engedélyezett ezen a teljes szöveges indexen.

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON Production.Document
   SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;
GO

D. Indítsunk teljes népességet

A következő példa teljes népességet indít el a táblázat teljes szöveges indexén JobCandidate .

USE AdventureWorks2022;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   START FULL POPULATION;
GO

Lásd még