FREETEXTTABLE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Adalah fungsi yang digunakan dalam klausul FROM dari pernyataan TRANSACT-SQL SELECT untuk melakukan pencarian teks lengkap SQL Server pada kolom terindeks teks lengkap yang berisi jenis data berbasis karakter. Fungsi ini mengembalikan tabel nol, satu, atau beberapa baris untuk kolom yang berisi nilai yang cocok dengan arti dan bukan hanya kata-kata yang tepat, dari teks dalam freetext_string yang ditentukan. FREETEXTTABLE dirujuk seolah-olah itu adalah nama tabel biasa.

FREETEXTTABLE berguna untuk jenis kecocokan yang sama dengan FREETEXT (Transact-SQL),

Kueri yang menggunakan FREETEXTTABLE mengembalikan nilai peringkat relevansi (RANK) dan kunci teks lengkap (KEY) untuk setiap baris.

Catatan

Untuk informasi tentang formulir pencarian teks lengkap yang didukung oleh SQL Server, lihat Kueri dengan Pencarian Teks Lengkap.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

tabel
Adalah nama tabel yang telah ditandai untuk kueri teks lengkap. tabel atau tampilanbisa berupa nama objek database satu, dua, atau tiga bagian. Saat mengkueri tampilan, hanya satu tabel dasar terindeks teks lengkap yang dapat terlibat.

tabel tidak dapat menentukan nama server dan tidak dapat digunakan dalam kueri terhadap server tertaut.

column_name
Adalah nama satu atau beberapa kolom terindeks teks lengkap dari tabel yang ditentukan dalam klausa FROM. Kolom dapat berjenis char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, atau varbinary(max).

column_list
Menunjukkan bahwa beberapa kolom, yang dipisahkan oleh koma, dapat ditentukan. column_list harus diapit tanda kurung. Kecuali language_term ditentukan, bahasa semua kolom column_list harus sama.

*
Menentukan bahwa semua kolom yang telah didaftarkan untuk pencarian teks lengkap harus digunakan untuk mencari freetext_string yang diberikan. Kecuali language_term ditentukan, bahasa semua kolom terindeks teks lengkap dalam tabel harus sama.

freetext_string
Adalah teks untuk dicari di column_name. Teks apa pun, termasuk kata, frasa, atau kalimat, dapat dimasukkan. Kecocokan dihasilkan jika ada istilah atau bentuk istilah apa pun yang ditemukan dalam indeks teks lengkap.

Tidak seperti dalam kondisi pencarian CONTAINS di mana AND adalah kata kunci, ketika digunakan dalam freetext_string kata 'dan' dianggap sebagai kata kebisingan, atau stopword, dan akan dibuang.

Penggunaan BOBOT, FORMSOF, kartubebas, NEAR, dan sintaks lainnya tidak diperbolehkan. freetext_string adalah kata patah kata, bertangkai, dan melewati tesaurus.

LANGUAGE_TERM BAHASA
Adalah bahasa yang sumber dayanya akan digunakan untuk pemecahan kata, stemming, dan tesaurus dan penghapusan stopword sebagai bagian dari kueri. Parameter ini bersifat opsional dan dapat ditentukan sebagai string, bilangan bulat, atau nilai heksadesimal yang sesuai dengan pengidentifikasi lokal (LCID) bahasa. Jika language_term ditentukan, bahasa yang diwakilinya akan diterapkan ke semua elemen kondisi pencarian. Jika tidak ada nilai yang ditentukan, kolom bahasa teks lengkap digunakan.

Jika dokumen dari bahasa yang berbeda disimpan bersama-sama sebagai objek besar biner (BLOB) dalam satu kolom, pengidentifikasi lokal (LCID) dari dokumen tertentu menentukan bahasa apa yang digunakan untuk mengindeks kontennya. Saat mengkueri kolom seperti itu, menentukan LANGUAGE_TERM BAHASA dapat meningkatkan probabilitas kecocokan yang baik.

Ketika ditentukan sebagai string, language_term sesuai dengan nilai kolom alias dalam tampilan kompatibilitas sys.syslanguages (Transact-SQL). String harus diapit dalam tanda kutip tunggal, seperti dalam 'language_term'. Ketika ditentukan sebagai bilangan bulat, language_term adalah LCID aktual yang mengidentifikasi bahasa. Ketika ditentukan sebagai nilai heksadesimal, language_term adalah 0x diikuti oleh nilai heksadesimal LCID. Nilai heksadesimal tidak boleh melebihi delapan digit, termasuk nol di depannya.

Jika nilai dalam format kumpulan karakter byte ganda (DBCS), Microsoft SQL Server akan mengonversinya ke Unicode.

Jika bahasa yang ditentukan tidak valid atau tidak ada sumber daya yang diinstal yang sesuai dengan bahasa tersebut, SQL Server mengembalikan kesalahan. Untuk menggunakan sumber daya bahasa netral, tentukan 0x0 sebagai language_term.

top_n_by_rank
Menentukan bahwa hanya nkecocokan berperingkat tertinggi, dalam urutan turun, yang dikembalikan. Hanya berlaku ketika nilai bilangan bulat, n, ditentukan. Jika top_n_by_rank dikombinasikan dengan parameter lain, kueri dapat mengembalikan lebih sedikit baris daripada jumlah baris yang benar-benar cocok dengan semua predikat. top_n_by_rank memungkinkan Anda meningkatkan performa kueri dengan hanya mengingat hit yang paling relevan.

Keterangan

Predikat teks lengkap dan fungsi bekerja pada satu tabel, yang tersirat dalam predikat FROM. Untuk mencari di beberapa tabel, gunakan tabel yang digabungkan dalam klausa FROM Anda untuk mencari pada tataan hasil yang merupakan produk dari dua tabel atau lebih.

FREETEXTTABLE menggunakan kondisi pencarian yang sama dengan predikat FREETEXT.

Seperti CONTAINSTABLE, tabel yang dikembalikan memiliki kolom bernama KEY dan RANK, yang direferensikan dalam kueri untuk mendapatkan baris yang sesuai dan menggunakan nilai peringkat baris.

Izin

FREETEXTTABLE hanya dapat dipanggil oleh pengguna dengan hak istimewa SELECT yang sesuai untuk tabel yang ditentukan atau kolom tabel yang direferensikan.

Contoh

J. Contoh sederhana

Contoh berikut membuat dan mengisi tabel sederhana dari dua kolom, mencantumkan 3 kabupaten dan warna dalam benderanya. Ini membuat dan mengisi katalog teks lengkap dan indeks pada tabel. Kemudian sintaks FREETEXTTABLE ditunjukkan.

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. Menggunakan FREETEXT dalam INNER JOIN

Contoh berikut mengembalikan deskripsi dan peringkat produk apa pun dengan deskripsi yang cocok dengan arti .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. Menentukan Kecocokan Bahasa dan Peringkat Tertinggi

Contoh berikut identik dan menunjukkan penggunaan LANGUAGEparameter language_term dan top_n_by_rank .

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  

Catatan

Parameter LANGUAGE_TERM BAHASA tidak diperlukan untuk menggunakan parameter top_n_by_rank.

Lihat Juga

Mulai dengan Pencarian Teks Lengkap
Membuat dan Mengelola Katalog Teks Lengkap
BUAT KATALOG FULLTEXT (T-SQL)
MEMBUAT INDEKS FULLTEXT (Transact-SQL)
Membuat dan Mengelola Indeks Teks Lengkap
Kueri dengan Pencarian Teks Lengkap
Membuat Kueri Pencarian Teks Lengkap (Alat Database Visual)
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (T-SQL)
Fungsi Set Baris (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
Opsi Konfigurasi Server peringkat precompute
Membandingkan fitur di Azure SQL Database dan Azure SQL Managed Instance