Bagikan melalui


Mulai dengan Pencarian Teks Lengkap

Database di SQL Server adalah teks lengkap yang diaktifkan secara default. Namun, untuk menggunakan indeks teks lengkap pada tabel, Anda harus menyiapkan kemampuan pengindeksan teks lengkap pada kolom tabel yang ingin Anda akses menggunakan mesin Full-Text.

Mengonfigurasi Database untuk Pencarian Full-Text

Untuk skenario apa pun, administrator database melakukan langkah-langkah dasar berikut untuk mengonfigurasi kolom tabel dalam database untuk pencarian teks lengkap:

  1. Buat katalog teks lengkap.

  2. Pada setiap tabel yang ingin Anda cari, buat indeks teks lengkap dengan:

    1. Identifikasi setiap kolom teks yang ingin Anda sertakan dalam indeks teks lengkap.

    2. Jika kolom tertentu berisi dokumen yang disimpan sebagai data biner (varbinary(max), atau image data), Anda harus menentukan kolom tabel ( kolom jenis) yang mengidentifikasi jenis setiap dokumen dalam kolom yang sedang diindeks.

    3. Tentukan bahasa yang Anda inginkan untuk digunakan pencarian teks lengkap pada dokumen di kolom.

    4. Pilih mekanisme pelacakan perubahan yang ingin Anda gunakan pada indeks teks lengkap untuk melacak perubahan dalam tabel dasar dan kolomnya.

Pencarian teks lengkap mendukung beberapa bahasa melalui penggunaan komponen linguistik berikut: pemecah kata dan stemmer, daftar henti yang berisi kata-kata stop (juga dikenal sebagai kata-kata kebisingan), dan file tesaurus. File thesaurus dan, dalam beberapa kasus, daftar henti memerlukan konfigurasi oleh administrator database. File thesaurus tertentu mendukung semua indeks teks lengkap yang menggunakan bahasa yang sesuai, dan daftar henti tertentu dapat dikaitkan dengan indeks teks lengkap sebanyak yang Anda inginkan.

Menyiapkan Katalog dan Indeks Full-Text

Ini melibatkan langkah-langkah dasar berikut:

  1. Buat katalog teks lengkap untuk menyimpan indeks teks lengkap.

    Setiap indeks teks lengkap harus termasuk dalam katalog teks lengkap. Anda dapat membuat katalog teks terpisah untuk setiap indeks teks lengkap, atau Anda dapat mengaitkan beberapa indeks teks lengkap dengan katalog tertentu. Katalog teks lengkap adalah objek virtual dan bukan milik grup file apa pun. Katalog adalah konsep logis yang mengacu pada sekelompok indeks teks lengkap.

  2. Buat indeks teks lengkap pada tabel atau tampilan terindeks.

    Indeks teks lengkap adalah jenis khusus indeks fungsi berbasis token yang dibangun dan dikelola oleh Full-Text Engine. Untuk membuat pencarian teks lengkap pada tabel atau tampilan, pencarian harus memiliki indeks unik, kolom tunggal, dan tidak dapat diubah ke null. Mesin Full-Text memerlukan indeks unik ini untuk memetakan setiap baris dalam tabel ke kunci yang unik dan dapat dikompresi. Indeks teks lengkap dapat mencakup charkolom , , varchar, ncharnvarchar, textntext, image, xml, varbinary, dan varbinary(max) . Untuk informasi selengkapnya, lihat Membuat dan Mengelola Indeks Full-Text.

Sebelum mempelajari tentang membuat indeks teks lengkap, penting untuk mempertimbangkan perbedaannya dengan indeks SQL Server reguler. Tabel berikut ini mencantumkan perbedaannya.

Indeks teks penuh Indeks SQL Server reguler
Hanya satu indeks teks lengkap yang diizinkan per tabel. Beberapa indeks reguler diperbolehkan per tabel.
Penambahan data ke indeks teks lengkap, yang disebut populasi, dapat diminta melalui jadwal atau permintaan tertentu, atau dapat terjadi secara otomatis dengan penambahan data baru. Diperbarui secara otomatis saat data yang menjadi dasarnya disisipkan, diperbarui, atau dihapus.
Dikelompokkan dalam database yang sama ke dalam satu atau beberapa katalog teks lengkap. Tidak dikelompokkan.

Memilih Opsi untuk Indeks Full-Text

Bagian ini mencakup hal-hal berikut:

  • Memilih bahasa kolom

  • Memilih grup file untuk indeks teks lengkap

  • Menetapkan indeks teks lengkap ke katalog teks lengkap

  • Mengaitkan daftar henti dengan indeks teks lengkap

  • Memperbarui indeks teks lengkap

Memilih Bahasa Kolom

Untuk informasi tentang hal-hal yang perlu dipertimbangkan saat Anda memilih bahasa kolom, lihat Memilih Bahasa Saat Membuat Indeks Full-Text.

Memilih Grup File untuk Indeks Full-Text

Proses membangun indeks teks lengkap cukup intensif I/O (pada tingkat tinggi, terdiri dari membaca data dari SQL Server, dan kemudian menyebarkan data yang difilter ke indeks teks lengkap). Sebagai praktik terbaik, temukan indeks teks lengkap di grup file database yang terbaik untuk memaksimalkan performa I/O atau menemukan indeks teks lengkap dalam grup file yang berbeda pada volume lain.

Ketika kemudahan manajemen penting bagi Anda, kami sarankan Anda menyimpan data tabel dan katalog teks lengkap yang berafiliasi dalam grup file yang sama. Terkadang, karena alasan performa, Anda mungkin ingin memiliki data tabel dan indeks teks lengkap dalam grup file yang berbeda yang disimpan pada volume yang berbeda untuk memaksimalkan paralelisme I/O.

Menetapkan Indeks Full-Text ke Katalog Full-Text

Penting untuk merencanakan penempatan indeks teks lengkap untuk tabel dalam katalog teks lengkap.

Sebaiknya kaitkan tabel dengan karakteristik pembaruan yang sama (seperti sejumlah kecil perubahan versus perubahan dalam jumlah besar, atau tabel yang sering berubah selama waktu tertentu dalam sehari) bersama-sama di bawah katalog teks lengkap yang sama. Dengan menyiapkan jadwal populasi katalog teks lengkap, indeks teks lengkap tetap sinkron dengan tabel tanpa memengaruhi penggunaan sumber daya server database selama periode aktivitas database tinggi.

Saat Anda menetapkan tabel ke katalog teks lengkap, pertimbangkan panduan berikut:

  • Selalu pilih indeks unik terkecil yang tersedia untuk kunci unik teks lengkap Anda. (Indeks berbasis bilangan bulat 4 byte optimal.) Ini mengurangi sumber daya yang diperlukan oleh Microsoft layanan Pencarian dalam sistem file secara signifikan. Jika kunci primer besar (lebih dari 100 byte), pertimbangkan untuk memilih indeks unik lain dalam tabel (atau membuat indeks unik lain) sebagai kunci unik teks lengkap. Jika tidak, jika ukuran kunci unik teks lengkap melebihi ukuran maksimum yang diizinkan (900 byte), populasi teks lengkap tidak akan dapat dilanjutkan.

  • Jika Anda mengindeks tabel yang memiliki jutaan baris, tetapkan tabel ke katalog teks lengkapnya sendiri.

  • Pertimbangkan jumlah perubahan yang terjadi dalam tabel yang diindeks teks lengkap, serta jumlah total baris. Jika jumlah total baris yang diubah, bersama dengan jumlah baris dalam tabel yang ada selama populasi teks lengkap terakhir, mewakili jutaan baris, tetapkan tabel ke katalog teks lengkapnya sendiri.

Mengaitkan Daftar Henti dengan Indeks Full-Text

SQL Server 2008 memperkenalkan daftar henti. Daftar henti adalah daftar stopword, juga dikenal sebagai kata-kata kebisingan. Daftar henti dikaitkan dengan setiap indeks teks lengkap, dan kata-kata dalam daftar henti tersebut diterapkan ke kueri teks-penuh pada indeks tersebut. Secara default, daftar henti sistem dikaitkan dengan indeks teks lengkap baru. Namun, Anda dapat membuat dan menggunakan daftar berhenti Anda sendiri sebagai gantinya. Untuk informasi selengkapnya, lihat Mengonfigurasi dan Mengelola Stopwords dan Stoplist untuk pencarian Full-Text.

Misalnya, pernyataan CREATE FULLTEXT STOPLISTTransact-SQL berikut membuat daftar henti teks lengkap baru bernama myStoplist3 dengan menyalin dari daftar henti sistem:

CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;  
GO  

Pernyataan ALTER FULLTEXT STOPLISTTransact-SQL berikut mengubah daftar henti bernama myStoplist, menambahkan kata 'en', pertama untuk bahasa Spanyol lalu untuk bahasa Prancis:

ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'Spanish';  
ALTER FULLTEXT STOPLIST MyStoplist ADD 'en' LANGUAGE 'French';  
GO  

Memperbarui Indeks Full-Text

Seperti indeks SQL Server reguler, indeks teks lengkap dapat diperbarui secara otomatis saat data dimodifikasi dalam tabel terkait. Ini adalah perilaku default. Atau, Anda dapat memperbarui indeks teks lengkap secara manual atau pada interval terjadwal yang ditentukan. Mengisi indeks teks lengkap dapat memakan waktu dan intensif sumber daya, oleh karena itu, pembaruan indeks biasanya dilakukan sebagai proses asinkron yang berjalan di latar belakang dan menjaga indeks teks lengkap tetap terbaru setelah modifikasi dalam tabel dasar. Memperbarui indeks teks lengkap segera setelah setiap perubahan dalam tabel dasar dapat menjadi intensif sumber daya. Oleh karena itu, jika Anda memiliki tingkat pembaruan/sisipkan/hapus yang sangat tinggi, Anda mungkin mengalami beberapa degradasi dalam performa kueri. Jika ini terjadi, pertimbangkan untuk menjadwalkan pembaruan pelacakan perubahan manual untuk mengikuti banyak perubahan dari waktu ke waktu, daripada bersaing dengan kueri untuk sumber daya.

Untuk memantau status populasi, gunakan fungsi FULLTEXTCATALOGPROPERTY atau OBJECTPROPERTYEX. Untuk mendapatkan status populasi katalog, jalankan pernyataan berikut:

SELECT FULLTEXTCATALOGPROPERTY('AdvWksDocFTCat', 'Populatestatus');  

Biasanya, jika populasi penuh sedang berlangsung, hasil yang dikembalikan adalah 1.

Contoh: Menyiapkan Pencarian Full-Text

Contoh dua bagian berikut membuat katalog teks lengkap bernama AdvWksDocFTCat pada database AdventureWorks lalu membuat indeks teks lengkap pada Document tabel di AdventureWorks2012. Pernyataan ini membuat katalog teks lengkap di direktori default yang ditentukan selama penyiapan. Folder bernama AdvWksDocFTCat ada di direktori default.

  1. Untuk membuat katalog teks lengkap bernama AdvWksDocFTCat, contohnya menggunakan pernyataan CREATE FULLTEXT CATALOG :

    USE AdventureWorks;  
    GO  
    CREATE FULLTEXT CATALOG AdvWksDocFTCat;  
    
  2. Sebelum Anda bisa membuat indeks teks lengkap pada tabel Dokumen, pastikan tabel memiliki indeks unik, kolom tunggal, dan tidak dapat diubah ke null. Pernyataan CREATE INDEX berikut membuat indeks unik, ui_ukDoc, pada kolom DocumentID dari tabel Dokumen:

    CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);  
    
  3. Setelah Anda memiliki kunci unik, Anda dapat membuat indeks teks lengkap pada Document tabel dengan menggunakan pernyataan CREATE FULLTEXT INDEX berikut.

    CREATE FULLTEXT INDEX ON Production.Document  
    (  
        Document                         --Full-text index column name   
            TYPE COLUMN FileExtension    --Name of column that contains file type information  
            Language 2057                 --2057 is the LCID for British English  
    )  
    KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index  
    WITH CHANGE_TRACKING AUTO            --Population type;  
    GO  
    
    

    KOLOM TYPE yang ditentukan dalam contoh ini menentukan kolom jenis dalam tabel yang berisi tipe dokumen di setiap baris kolom 'Dokumen' (yang berjenis biner). Kolom jenis menyimpan ekstensi file yang disediakan pengguna-".doc", ".xls", dan sebagainya pada dokumen dalam baris tertentu. Mesin Full-Text menggunakan ekstensi file dalam baris tertentu untuk memanggil filter yang benar untuk digunakan untuk mengurai data di baris tersebut. Setelah filter mengurai data biner baris, pemecah kata yang ditentukan akan mengurai konten (dalam contoh ini, pemecah kata untuk bahasa Inggris Inggris digunakan). Perhatikan bahwa proses pemfilteran hanya terjadi pada waktu pengindeksan atau jika pengguna menyisipkan atau memperbarui kolom dalam tabel dasar saat pelacakan perubahan otomatis diaktifkan untuk indeks teks lengkap. Untuk informasi selengkapnya, lihat Mengonfigurasi dan Mengelola Filter untuk Pencarian.

Tugas umum

Untuk Membuat Katalog Full-Text

Untuk Menampilkan Indeks Tabel (atau Tampilan)

Untuk Membuat Indeks Unik

Untuk Membuat Indeks Full-Text

Untuk Menampilkan Informasi tentang Indeks Full-Text

Katalog atau Tampilan Manajemen Dinamis Deskripsi
sys.fulltext_index_catalog_usages (Transact-SQL) Mengembalikan baris untuk setiap katalog teks lengkap ke referensi indeks teks lengkap.
sys.fulltext_index_columns (Transact-SQL) Berisi baris untuk setiap kolom yang merupakan bagian dari indeks teks lengkap.
sys.fulltext_index_fragments (Transact-SQL) Indeks teks penuh menggunakan tabel internal yang disebut fragmen indeks teks lengkap untuk menyimpan data indeks terbalik. Tampilan ini dapat digunakan untuk mengkueri metadata tentang fragmen ini. Tampilan ini berisi baris untuk setiap fragmen indeks teks lengkap di setiap tabel yang berisi indeks teks lengkap.
sys.fulltext_indexes (Transact-SQL) Berisi baris per indeks teks lengkap objek tabular.
sys.dm_fts_index_keywords (Transact-SQL) Mengembalikan informasi tentang konten indeks teks lengkap untuk tabel yang ditentukan.
sys.dm_fts_index_keywords_by_document (Transact-SQL) Mengembalikan informasi tentang konten tingkat dokumen dari indeks teks lengkap untuk tabel yang ditentukan. Kata kunci tertentu dapat muncul di beberapa dokumen.
sys.dm_fts_index_population (Transact-SQL) Mengembalikan informasi tentang populasi indeks teks lengkap yang saat ini sedang berlangsung.

Lihat juga

BUAT KATALOG FULLTEXT (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)
CREATE FULLTEXT STOPLIST (Transact-SQL)
BUAT TABEL (Transact-SQL)
Mengisi Indeks Teks Lengkap
FULLTEXTCATALOGPROPERTY (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)