Szemantikai keresés engedélyezése táblákon és oszlopokon

A következőkre vonatkozik:SQL Server

Ismerteti, hogyan engedélyezheti vagy tilthatja le a statisztikai szemantikai indexelést a dokumentumokat vagy szöveget tartalmazó kijelölt oszlopokon.

A statisztikai szemantikai keresés a Full-Text Search által létrehozott indexeket használja, és további indexeket hoz létre. A teljes szöveges keresés függőségének eredményeként új szemantikai indexet hoz létre egy új teljes szöveges index definiálásakor, vagy egy meglévő teljes szöveges index módosításakor. Új szemantikai indexet Transact-SQL utasítások használatával, vagy az Full-Text Indexelő varázslóval és az SQL Server Management Studióban található egyéb párbeszédpanelekkel hozhat létre a jelen cikkben leírtak szerint.

Szemantikai index létrehozása

Szemantikai index létrehozásának követelményei és korlátozásai

  • Indexet bármely olyan adatbázis-objektumon létrehozhat, amely teljes szöveges indexeléshez támogatott, beleértve a táblákat és az indexelt nézeteket is.

  • Ahhoz, hogy engedélyezhesse az adott oszlopok szemantikai indexelését, a következő előfeltételeknek kell teljesülniük:

    • Az adatbázishoz teljes szöveges katalógusnak kell léteznie.

    • A táblázatnak teljes szöveges indexel kell rendelkeznie.

    • A kijelölt oszlopoknak részt kell vennie a teljes szöveges indexben.

    Ezeket a követelményeket egyszerre hozhatja létre és engedélyezheti.

  • A teljes szöveges indexeléshez támogatott adattípusok bármelyikével rendelkező oszlopokon létrehozhat szemantikai indexet. További információ: Full-Text indexek létrehozása és kezelése.

  • Bármilyen dokumentumtípust megadhat, amely támogatja a varbinary(max) oszlopok teljes szöveges indexelését. További információért lásd ebben a cikkben a Útmutató: Annak meghatározása, hogy mely dokumentumtípusok indexelhetők.

  • A szemantikai indexelés két típusú indexet hoz létre a kiválasztott oszlopokhoz : a kulcskifejezések indexét és a dokumentum-hasonlóság indexét. A szemantikai indexelés engedélyezésekor nem választhat csak egy indextípust, a másikat pedig nem. Ezt a két indexet azonban egymástól függetlenül is lekérdezheti. További információ: Kulcskifejezések keresése szemantikai kereséssel rendelkező dokumentumokban , valamint hasonló és kapcsolódó dokumentumok keresése szemantikai kereséssel.

  • Ha nem ad meg explicit módon LCID-t egy szemantikai indexhez, akkor a szemantikai indexeléshez csak az elsődleges nyelvet és a hozzá tartozó nyelvi statisztikákat használja a rendszer.

  • Ha egy olyan oszlop nyelvét adja meg, amelyhez a nyelvi modell nem érhető el, az index létrehozása meghiúsul, és hibaüzenetet ad vissza.

Szemantikai index létrehozása, ha nincs teljes szöveges index

Amikor új teljes szöveges indexet hoz létre az CREATE FULLTEXT INDEX utasítással, engedélyezheti a szemantikai indexelést az oszlopszinten úgy, hogy a kulcsszót STATISTICAL_SEMANTICS az oszlopdefiníció részeként adja meg. A szemantikai indexelést akkor is engedélyezheti, ha a Full-Text Indexelő varázslóval új teljes szöveges indexet hoz létre.

Új szemantikai index létrehozása Transact-SQL használatával

Hívja meg az utasítást CREATE FULLTEXT INDEX , és adja meg STATISTICAL_SEMANTICS minden olyan oszlopot, amelyen szemantikai indexet szeretne létrehozni. Az utasítás összes lehetőségéről további információt a (Transact-SQL) című témakörben találCREATE FULLTEXT INDEX.

1. példa: Egyedi index, teljes szöveges index és szemantikai index létrehozása

Az alábbi példa egy alapértelmezett teljes szöveges katalógust hoz létre. ft A példa ezután létrehoz egy egyedi indexet a JobCandidateIDHumanResources.JobCandidate mintaadatbázis táblázatának oszlopában AdventureWorks2025 . Ez az egyedi index a teljes szöveges index kulcsoszlopaként szükséges. A példa ezután létrehoz egy teljes szöveges indexet és egy szemantikai indexet az Resume oszlopon.

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

2. példa: Teljes szöveges és szemantikai index létrehozása több, késleltetett indexet tartalmazó oszlopon

Az alábbi példa egy teljes szöveges katalógust documents_cataloghoz létre a AdventureWorks2025 mintaadatbázisban. A példa ezután létrehoz egy teljes szöveges indexet, amely ezt az új katalógust használja. A teljes szöveges index a Title táblán a DocumentSummary, Document és Production.Document oszlopokon jön létre, míg a szemantikai index csak a Document oszlopon készül el. Ez a teljes szöveges index az újonnan létrehozott teljes szöveges katalógust és egy meglévő egyedi kulcsindexet használja. PK_Document_DocumentID Az ajánlott módon ez az indexkulcs egy egész szám oszlopban jön létre. DocumentID A példa megadja az angol nyelv 1033-as LCID-jét, amely az oszlopok adatait tartalmazó nyelv.

Ez a példa azt is meghatározza, hogy a változáskövetés ki van kapcsolva sokaság nélkül. Később, csúcsidőn kívül, a példa egy ALTER FULLTEXT INDEX utasítással indít el egy teljes sokaságot az új indexen, és engedélyezi az automatikus változáskövetést.

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

Később csúcsidőn kívüli időpontban az index feltöltődik:

ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO

Új szemantikai index létrehozása az SQL Server Management Studióval

Futtassa a Full-Text Indexelő varázslót, és engedélyezze a statisztikai szemantikát a Táblaoszlopok kiválasztása lapon minden olyan oszlophoz, amelyen szemantikai indexet szeretne létrehozni. A Full-Text Indexelő varázsló elindításáról további információt a Full-Text Indexelő varázsló használata című témakörben talál.

Szemantikai index létrehozása meglévő teljes szöveges index esetén

Akkor adhat hozzá szemantikai indexelést, ha egy meglévő teljes szöveges indexet módosít az ALTER FULLTEXT INDEX utasítással. A szemantikai indexelést az SQL Server Management Studio különböző párbeszédpaneljeit használva is hozzáadhatja.

Szemantikai index hozzáadása Transact-SQL használatával

Hívja meg az ALTER FULLTEXT INDEX utasítást az alábbi szakaszban ismertetett beállításokkal minden olyan oszlophoz, amelyhez szemantikai indexet szeretne hozzáadni. Az utasítás összes lehetőségéről további információt a (Transact-SQL) című témakörben találALTER FULLTEXT INDEX.

A teljes szöveges és a szemantikai indexek is újrafeltöltésre kerülnek ALTERa hívás után, kivéve, ha másként van megadva.

  • Ha csak egy oszlophoz szeretne teljes szöveges indexelést hozzáadni, használja a szintaxist ADD .

  • Ha teljes szöveges és szemantikai indexelést is szeretne hozzáadni egy oszlophoz, használja a ADD szintaxist a STATISTICAL_SEMANTICS beállítással.

  • Ha szemantikai indexelést szeretne hozzáadni egy olyan oszlophoz, amely már engedélyezve van a teljes szöveges indexeléshez, használja a ADD STATISTICAL_SEMANTICS lehetőséget. Egyetlen utasításban csak egy oszlophoz adhat szemantikai indexelést ALTER .

Példa: Szemantikai indexelés hozzáadása olyan oszlophoz, amely már rendelkezik teljes szöveges indexeléssel

Az alábbi példa egy meglévő teljes szöveges indexet módosít a Production.Document mintaadatbázis tábláján AdventureWorks2025 . A példa egy szemantikai indexet ad hozzá a DocumentProduction.Document tábla oszlopához, amely már rendelkezik teljes szöveges indexel. A példa azt határozza meg, hogy az index nem lesz automatikusan feltöltve.

ALTER FULLTEXT INDEX ON Production.Document
    ALTER COLUMN Document
        ADD Statistical_Semantics
    WITH NO POPULATION
GO

Szemantikai index hozzáadása az SQL Server Management Studióval

A szemantikai és teljes szöveges indexeléshez engedélyezett oszlopokat az Full-Text Index tulajdonságai párbeszédpanel Full-Text Indexoszlopok lapján módosíthatja. További információ: Full-Text indexek kezelése.

Szemantikai index módosítása

Meglévő index módosításának követelményei és korlátozásai

  • Nem módosíthatja a meglévő indexet, amíg az index populációja folyamatban van. Az indexpopuláció állapotának monitorozásáról további információt a Szemantikai keresés kezelése és monitorozása című témakörben talál.

  • Nem adhat hozzá indexelést egy oszlophoz, és nem módosíthatja vagy elvetheti ugyanahhoz az oszlophoz az indexelést az utasítás egyetlen hívásában ALTER FULLTEXT INDEX .

Szemantikai index elvetése

A ALTER FULLTEXT INDEX utasítást használva elvetheti a szemantikai indexelést, amikor módosít egy meglévő teljes szöveges indexet. A szemantikai indexelést az SQL Server Management Studióban különböző párbeszédpanelek használatával is elvetheti.

Szemantikai index elvetése Transact-SQL használatával

Ha csak egy oszlopból vagy oszlopból szeretné elvetni a szemantikai indexelést, hívja meg az ALTER FULLTEXT INDEX utasítást a ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS beállítással. Egyetlen utasításban több oszlopból is elvetheti az indexelést ALTER .

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP STATISTICAL_SEMANTICS;
GO

Ha teljes szöveges és szemantikai indexelést is szeretne elvetni egy oszlopból, hívja meg az ALTER FULLTEXT INDEX utasítást a ALTER COLUMN <column_name> DROP beállítással.

USE database_name;
GO

ALTER FULLTEXT INDEX
    ALTER COLUMN column_name
    DROP;
GO

Szemantikai index elvetése az SQL Server Management Studióval

A szemantikai és teljes szöveges indexeléshez engedélyezett oszlopokat az Full-Text Index tulajdonságai párbeszédpanel Full-Text Indexoszlopok lapján módosíthatja. További információ: Full-Text indexek kezelése.

Szemantikai index elvetésének követelményei és korlátozásai

  • A szemantikai indexelés megtartása mellett nem vetheti el a teljes szöveges indexelést egy oszlopból. A szemantikai indexelés a dokumentumok hasonlósági eredményeinek teljes szöveges indexelésétől függ.

  • Nem adható meg a NO POPULATION opció, amikor a szemantikai indexelést távolítja el egy olyan táblából, amelyre engedélyezve volt a szemantikai indexelés, annak utolsó oszlopából. A korábban indexelt eredmények eltávolításához populációciklusra van szükség.

Ellenőrizze, hogy engedélyezve van-e a szemantikai keresés az adatbázis-objektumokon

Engedélyezve van a szemantikai keresés egy adatbázisban?

IsFullTextEnabled A DATABASEPROPERTYEX (Transact-SQL) metaadatfüggvény tulajdonságának lekérdezése.

A visszatérési 1 érték azt jelzi, hogy a teljes szöveges keresés és a szemantikai keresés engedélyezve van az adatbázisban. A visszatérési 0 érték azt jelzi, hogy nincsenek engedélyezve.

SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO

Engedélyezve van a szemantikai keresés egy táblában?

TableFullTextSemanticExtraction Az OBJECTPROPERTYEX (Transact-SQL) metaadatfüggvény tulajdonságának lekérdezése.

Az 1 visszatérési érték azt jelzi, hogy a szemantikai keresés engedélyezve van a táblában; A 0 visszatérési érték azt jelzi, hogy nincs engedélyezve.

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO

Engedélyezve van a szemantikai keresés egy oszlopban?

Annak megállapításához, hogy engedélyezve van-e a szemantikai keresés egy adott oszlopban:

  • StatisticalSemantics A COLUMNPROPERTY (Transact-SQL) metaadatfüggvény tulajdonságának lekérdezése.

    Az 1 visszatérési érték azt jelzi, hogy a szemantikai keresés engedélyezve van az oszlopban; A 0 visszatérési érték azt jelzi, hogy nincs engedélyezve.

    SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics');
    GO
    
  • Kérdezze le a katalógusnézetet sys.fulltext_index_columns (Transact-SQL) a teljes szöveges indexhez.

    Az oszlopban lévő statistical_semantics 1 érték azt jelzi, hogy a megadott oszlop a teljes szöveges indexelés mellett a szemantikai indexeléshez is engedélyezve van.

    SELECT * FROM sys.fulltext_index_columns
    WHERE object_id = OBJECT_ID('table_name');
    GO
    
  • A Management Studióban az Object Explorerben kattintson a jobb gombbal egy oszlopra, és válassza a Tulajdonságok lehetőséget. Az Oszloptulajdonságok párbeszédpanel Általános lapján jelölje be a Statisztikai szemantika tulajdonság értékét.

    Az Igaz érték azt jelzi, hogy a megadott oszlop a teljes szöveges indexelés mellett a szemantikai indexeléshez is engedélyezve van.

A szemantikai kereséshez támogatott nyelvek ellenőrzése

A szemantikai indexeléshez kevesebb nyelv támogatott, mint a teljes szöveges indexeléshez. Ennek eredményeképpen lehetnek olyan oszlopok, amelyeket a teljes szöveges kereséshez indexelhet, szemantikai kereséshez azonban nem.

Lekérdezze a katalógusnézetet sys.fulltext_semantic_languages (Transact-SQL).

SELECT * FROM sys.fulltext_semantic_languages;
GO

A szemantikai indexeléshez az alábbi nyelvek támogatottak. Ez a lista az LCID által rendezett katalógusnézet sys.fulltext_semantic_languages (Transact-SQL) kimenetét jelöli.

Nyelv LCID
Hagyományos kínai 1028
Német 1031
Angol (Egyesült Államok) 1033
Francia 1036
Olasz 1040
brazil 1046
Orosz 1049
Svéd 1053
Egyszerűsített kínai 2052
brit angol nyelvváltozat 2057
Portugál 2070
Kínai (Hongkong, KKT, KNK) 2070
Spanyol 3082
Kínai (Szingapúr) 4100
Kínai (Macao SAR) 5124

Megjegyzés:

Ha az eredmények üresek, le kell töltenie és telepítenie kell a Szemantic Language Statistics adatbázist. További információ: A szemantikai nyelvstatisztikai adatbázis telepítése, csatolása és regisztrálása.

Az indexelhető dokumentumtípusok meghatározása

Lekérdezze a katalógusnézetet sys.fulltext_document_types (Transact-SQL).

Ha az indexelni kívánt dokumentumtípus nem szerepel a támogatott típusok listájában, előfordulhat, hogy további szűrőket kell keresnie, letöltenie és telepítenie. További információkért lásd: Regisztrált szűrők és szóhatárolók megtekintése vagy módosítása.

Ajánlott eljárás: Hozzon létre egy külön fájlcsoportot a teljes szöveges és szemantikai indexekhez

Érdemes lehet külön fájlcsoportot létrehozni a teljes szöveges és szemantikai indexekhez, ha a lemezterület-foglalás problémát jelent. A szemantikai indexek ugyanabban a fájlcsoportban jönnek létre, mint a teljes szöveges index. A teljesen kitöltött szemantikai indexek nagy mennyiségű adatot tartalmazhatnak.

Probléma: Az adott oszlopban végzett keresés nem ad eredményt

Unicode nyelvhez nem Unicode LCID van megadva?

A szemantikai indexelés nem Unicode oszloptípuson engedélyezhető egy LCID-vel olyan nyelv esetében, amely csak Unicode-szavakat használ, például az orosz LCID 1049-et. Ebben az esetben a rendszer soha nem ad vissza eredményt az oszlop szemantikai indexeiből.