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


FREETEXTTABLE (Transact-SQL)

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

Egy függvény, amelyet egy Transact-SQL SELECT utasítás FROM záradékában használnak, hogy SQL Server teljes szöveges keresését végezze teljes szöveges indexelt oszlopokon, amelyek karakteralapú adattípusokat tartalmaznak. Ez a függvény egy táblázatot ad vissza nulla, egy vagy több sorból azokra az oszlopokra, amelyek értékeket tartalmaznak, amelyek megfelelnek a megadott freetext_string szövegének jelentésének, nem csak a pontos megfogalmazásának. A FREETEXTTABLE-t úgy említik, mintha egy hagyományos táblanév lenne.

A FREETEXTTABLE ugyanolyan típusú egyezésekhez hasznos, mint a FREETEXT (Transact-SQL)

A FREETEXTTABLE használatával végzett lekérdezések minden sorhoz relevancia rangsorolási értéket (RANK) és teljes szöveges kulcsot (KEY) adnak vissza.

Megjegyzés:

Az SQL Server által támogatott teljes szöveges keresések formájával kapcsolatos információkért lásd: Lekérdezés Full-Text Keresési.

Transact-SQL szintaxis konvenciók

Szemantika

FREETEXTTABLE (table , { column_name | (column_list) | * }   
          , 'freetext_string'   
     [ , LANGUAGE language_term ]   
     [ , top_n_by_rank ] )  

Arguments

table
Ez annak a tábla neve, amelyet teljes szöveges lekérdezésre jelöltek. A tábla vagy nézetlehet egy-, két- vagy háromrészes adatbázis-objektum név. Egy nézet lekérdezésekor csak egy teljes szövegű, indexelt alaptábla vehet igénybe.

a tábla nem tud szervernevet megadni, és nem használható lekérdezésekben a linked szerverek ellen.

column_name
A FROM záradékban megadott tábla egy vagy több teljes szöveges indexelt oszlopának neve. Az oszlopok lehetnek karakter, varchar, nchar, nvarchar, szöveg,,ntext, kép, xml, varbinaryvagy varbinary(max).

column_list
Azt jelzi, hogy több, vesszővel elválasztott oszlop is megadható. column_list zárójelek közé kell tenni. Ha nincs megadva language_term, a column_list összes oszlopának nyelvének azonosnak kell lennie.

*
Megadja, hogy a teljes szöveges kereséshez regisztrált összes oszlopot az adott freetext_stringkell keresni. Hacsak language_term nincs megadva, a táblázatban található összes teljes szövegű indexelt oszlop nyelve ugyanaznak kell lennie.

freetext_string
A column_namekeresendő szöveg. Bármilyen szöveg beírható, beleértve a szavakat, kifejezéseket vagy mondatokat is. Az egyezések akkor jönnek létre, ha a teljes szöveges indexben található bármilyen kifejezés vagy kifejezés formája.

Ellentétben a CONTAINS keresési feltétellel, ahol az AND kulcsszó, az ' és' szó freetext_string-ben zajos szónak vagy stopwordnak számít, és elvetjük.

A SÚLY, a FORMSOF, a helyettesítő karakterek, a NEAR és más szintaxis használata nem engedélyezett. freetext_string szótöredezett, őstörzsű és átment a szinonimaszótáron.

NYELVI language_term
Az a nyelv, amelynek erőforrásait a lekérdezés részeként a szótöréshez, a szótöréshez, a szinonimaszótárhoz és a stopword eltávolításához fogja használni. Ez a paraméter nem kötelező, és megadható egy nyelv területi azonosítójának (LCID) megfelelő sztringként, egész számként vagy hexadecimális értékként. 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, a rendszer a teljes szövegű oszlop nyelvét használja.

Ha a különböző nyelvek dokumentumai bináris nagyméretű objektumokként (BLOB-k) vannak tárolva egyetlen oszlopban, az adott dokumentum területi azonosítója (LCID) határozza meg, hogy a rendszer milyen nyelvet használ a tartalom indexeléséhez. Egy ilyen oszlop lekérdezésekor a LANGUAGE language_term megadása növelheti a jó egyezés valószínűségét.

Ha karakterláncként van megadva, language_term megfelel a sys.syslanguages (Transact-SQL) kompatibilitási nézetben szereplő alias oszlop értékének. 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 hexadecimális értékként van megadva, a language_term 0x, majd az LCID hexadecimális értéke követi. A hexadecimális érték nem haladhatja meg a nyolc számjegyet, beleértve a kezdő nullákat is.

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

Ha a megadott nyelv nem érvényes, vagy nincs telepített erőforrás, amely megfelelne annak a nyelvnek, az SQL Server hibát ad vissza. A semleges nyelvi erőforrások használatához adja meg a 0x0 language_term.

top_n_by_rank
Megadja, hogy csak nlegmagasabb rangú meccset térnek vissza csökkenő sorrendben. Csak akkor érvényes, ha egy egész szám (n) van megadva. Ha top_n_by_rank más paraméterekkel van kombinálva, a lekérdezés kevesebb sort ad vissza, mint az összes predikátumnak ténylegesen megfelelő sorok száma. top_n_by_rank lehetővé teszi a lekérdezési teljesítmény növelését, ha csak a legrelevánsabb találatokat hívja vissza.

Megjegyzések

A teljes szöveges predikátumok és függvények egyetlen táblán működnek, amelyet a FROM predikátum feltételez. Ha több táblában szeretne keresni, a FROM záradékban egy csatlakoztatott táblával kereshet két vagy több tábla termékét tartalmazó eredményhalmazban.

A FREETEXTTABLE ugyanazokat a keresési feltételeket használja, mint a FREETEXT predikátum.

A CONTAINSTABLE-hez hasonlóan a visszaadott táblának is vannak KEY és RANK nevű oszlopai, amelyeket a lekérdezésben hivatkoznak a megfelelő sorok megszerzésére és a sorsorsorolási értékek használatára.

Permissions

A FREETEXTTABLE csak azok a felhasználók hívhatják meg, akik megfelelő SELECT jogosultsággal rendelkeznek a megadott táblához vagy a tábla hivatkozott oszlopaihoz.

Példák

A. Egyszerű példa

A következő példa egy egyszerű, két oszlopból álló táblázatot hoz létre és tölt ki, amely 3 megyét és zászlóik színeit sorolja fel. Ezután teljes szöveges katalógust és indexet hoz létre és tölt fel a táblázaton. Ezután bemutatjuk a FREETEXTTABLE szintaxist.

CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));  
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);  
INSERT Flags VALUES ('France', 'Blue and White and Red');  
INSERT Flags VALUES ('Italy', 'Green and White and Red');  
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');  
SELECT * FROM Flags;  
GO  
  
CREATE FULLTEXT CATALOG TestFTCat;  
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;  
GO   
  
SELECT * FROM Flags;  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');  

B. FREETEXT használata egy INNER JOIN-ban

A következő példa visszaadja bármely olyan termék leírását és rangját, amely megfelel a jelentésének.high level of performance

USE AdventureWorks2022;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance') AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

C. A nyelv és a legmagasabb rangú mérkőzések meghatározása

A következő példa azonos, és bemutatja a LANGUAGElanguage_term és top_n_by_rank paraméterek használatát.

USE AdventureWorks2022;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance',  
    LANGUAGE N'English', 2) AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

Megjegyzés:

A LANGUAGE language_term paraméter nem szükséges a top_n_by_rank paraméter használatához.

Lásd még:

Első lépések a Full-Text Kereséshez
Full-Text katalógusok létrehozása és kezelése
TELJES SZÖVEGES KATALÓGUS LÉTREHOZÁSA (Transact-SQL)
TELJES SZÖVEGŰ INDEX LÉTREHOZÁSA (Transact-SQL)
Full-Text indexek létrehozása és kezelése
Lekérdezés Full-Text Keresés
Full-Text keresési lekérdezések (Visual Database Tools) létrehozása
TARTALMAZZA (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
SZABADSZÖVEG (Transact-SQL)
Sorhalmaz függvények (Transact-SQL)
VÁLASZT (Transact-SQL)
AHOL (Transact-SQL)
precompute rank Server Configuration Option
Hasonlítsd össze az Azure SQL Database és Azure SQL Managed Instance funkcióit