Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure 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
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