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
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Egy Transact-SQL SELECT utasítás Transact-SQL WHERE záradékában használt predikátum a karakteralapú adattípusokat tartalmazó, teljes szöveges SQL Server-keresés végrehajtásához. Ez a predikátum olyan értékeket keres, amelyek megfelelnek a jelentésnek, és nem csak a keresési feltételben szereplő szavak pontos szövegét. A FREETEXT használata esetén a teljes szöveges lekérdezési motor belsőleg végrehajtja a következő műveleteket a freetext_string, súlyt rendel hozzá az egyes kifejezésekhez, majd megkeresi az egyezéseket:
Elválasztja a sztringet egyes szavakra a szóhatárok (szótörés) alapján.
A szavak inflektív formáit hozza létre (eredet).
A szinonimaszótárban szereplő egyezések alapján azonosítja a kifejezések bővítményeinek vagy pótlásainak listáját.
Note
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.
A következő: SQL Server ( SQL Server 2008 (10.0.x) jelenlegi).
Transact-SQL szintaxis konvenciói
Syntax
FREETEXT ( { column_name | (column_list) | * }
, 'freetext_string' [ , LANGUAGE language_term ] )
Arguments
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. Ha egynél több tábla szerepel a FROM záradékban, a * értéket a táblanévnek kell minősítenie. Ha nincs megadva language_term, a tábla összes oszlopának nyelvének azonosnak 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.
A CONTAINS és a CONTAINSTABLE keresési feltételtől eltérően, ahol az AND kulcsszó, freetext_string az "and" szó zajszónak, vagy stopword, és el lesz vetve.
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.
freetext_stringnvarchar. Implicit átalakítás akkor történik, ha egy másik karakter adattípust használ bemenetként. Nagy sztring típusú nvarchar(max) és varchar(max) nem használható. Az alábbi példában a @SearchWorddefiniált varchar(30) változó implicit konverziót okoz a FREETEXT predikátumban.
USE AdventureWorks2022;
GO
DECLARE @SearchWord VARCHAR(30)
SET @SearchWord ='performance'
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
Mivel a "paramétersziffing" nem működik az átalakítás során, használja nvarchar a jobb teljesítmény érdekében. A példában deklarálja a @SearchWordnvarchar(30).
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'performance'
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
Az OPTIMIZE FOR lekérdezési tippet olyan esetekre is használhatja, amelyekben nem optimális terv jön létre.
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 sztringként van megadva, a language_term a sys.syslanguages kompatibilitási nézet aliasának oszlopértékének felel meg. 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 érvénytelen, vagy nincs olyan erőforrás telepítve, amely megfelel az adott nyelvnek, a Microsoft SQL Server hibát ad vissza. A semleges nyelvi erőforrások használatához adja meg a 0x0 language_term.
Általános 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 FREETEXT-et használó teljes szöveges lekérdezések kevésbé pontosak, mint azok a teljes szöveges lekérdezések, amelyek a CONTAINS-t használják. Az SQL Server teljes szöveges keresőmotorja fontos szavakat és kifejezéseket azonosít. A FENNTARTOTT predikátum <contains_search_condition> paraméterében megadott fenntartott kulcsszavaknak vagy helyettesítő karaktereknek nincs különleges jelentése.
Ha az adatbázis kompatibilitási szintje 100- ra van állítva, a teljes szöveges predikátumok nem engedélyezettek a OUTPUT záradékban,.
Note
A FREETEXTTABLE függvény ugyanolyan típusú egyezésekhez használható, mint a SZABADSZÖVEG-predikátum. Erre a függvényre úgy hivatkozhat, mint egy reguláris táblanév a SELECT utasítás
Távoli kiszolgálók lekérdezése
A CONTAINS vagy a FREETEXT predikátumban négyrészes nevet használhat a csatolt kiszolgálón található céltáblák teljes szöveges indexelt oszlopainak lekérdezéséhez. Ha egy távoli kiszolgálót teljes szöveges lekérdezések fogadására szeretne előkészíteni, hozzon létre egy teljes szöveges indexet a távoli kiszolgálón lévő céltáblákon és oszlopokon, majd adja hozzá a távoli kiszolgálót csatolt kiszolgálóként.
A LIKE és a Full-Text Keresés összehasonlítása
A teljes szöveges kereséssel ellentétben a LIKETransact-SQL predikátum csak karaktermintákon működik. Emellett a LIKE predikátum nem használható formázott bináris adatok lekérdezésére. Emellett a LIKE-lekérdezések nagy mennyiségű strukturálatlan szöveges adattal szemben sokkal lassabbak, mint az azonos adatokra vonatkozó teljes szöveges lekérdezések. A TÖBB millió sornyi szöveges adatra vonatkozó LIKE-lekérdezések visszaadása perceket vehet igénybe; mivel a visszaadott sorok számától függően egy teljes szöveges lekérdezés csak másodperceket vagy kevesebbet vehet igénybe ugyanazokkal az adatokkal.
Examples
A. Megadott karakterértékeket tartalmazó szavak keresése a FREETEXT használatával
Az alábbi példa az összes olyan dokumentumot keresi, amely a létfontosságú, biztonsági és összetevőkkel kapcsolatos szavakat tartalmazza.
USE AdventureWorks2022;
GO
SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );
GO
B. A FREETEXT használata változókkal
Az alábbi példa egy változót használ egy adott keresési kifejezés helyett.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30);
SET @SearchWord = N'high-performance';
SELECT Description
FROM Production.ProductDescription
WHERE FREETEXT(Description, @SearchWord);
GO
Lásd még:
Első lépések Full-Text Keresési
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ési
Full-Text keresési lekérdezések (Visual Database Tools) létrehozása
TARTALMAZZA (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
adattípusok (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
AHOL (Transact-SQL)