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


FREETEXT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-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 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. 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 FROM záradékában. További információ: FREETEXTTABLE (Transact-SQL).

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 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)