Mengonfigurasi & mengelola pemecah kata & stemmer untuk pencarian (SQL Server)
Berlaku untuk: SQL ServerAzure SQL Database
Pemecah kata dan stemmer melakukan analisis linguistik pada semua data terindeks teks lengkap. Analisis linguistik melakukan dua hal berikut:
Temukan batas kata (pemecahan kata). Pemecah kata mengidentifikasi kata-kata individual dengan menentukan di mana batas kata ada berdasarkan aturan leksikal bahasa. Setiap kata (juga dikenal sebagai token) disisipkan ke dalam indeks teks lengkap menggunakan representasi terkompresi untuk mengurangi ukurannya.
Kata kerja konjugasi (stemming). Stemmer menghasilkan bentuk infleksi dari kata tertentu berdasarkan aturan bahasa tersebut (misalnya, "running", "ran", dan "runner" adalah berbagai bentuk kata "run").
Pemecah kata dan stemmer khusus bahasa
Pemecah kata dan stemmer khusus bahasa, dan aturan untuk analisis linguistik berbeda untuk bahasa yang berbeda. Pemecah kata khusus bahasa membuat istilah yang dihasilkan lebih akurat untuk bahasa tersebut.
Untuk menggunakan pemecah kata dan stemmer yang disediakan untuk semua bahasa yang didukung oleh SQL Server, Anda biasanya tidak perlu mengambil tindakan apa pun.
- Di mana ada pemecah kata untuk keluarga bahasa, tetapi tidak untuk sub-bahasa tertentu, bahasa utama digunakan. Misalnya, pemecah kata Prancis digunakan untuk menangani teks yang merupakan bahasa Prancis Kanada.
- Jika tidak ada pemecah kata yang tersedia untuk bahasa tertentu, pemecah kata netral digunakan. Dengan pemecah kata netral, kata-kata dipecah pada karakter netral seperti spasi dan tanda baca.
Mendapatkan daftar bahasa yang didukung
Untuk melihat daftar bahasa yang didukung oleh SQL Server Full-Text Search, gunakan pernyataan Transact-SQL berikut. Kehadiran bahasa dalam daftar ini menunjukkan bahwa pemecah kata terdaftar untuk bahasa tersebut.
SELECT * FROM sys.fulltext_languages
Mendapatkan daftar pemecah kata terdaftar
Agar Pencarian Teks Lengkap menggunakan pemecah kata untuk bahasa, mereka harus didaftarkan. Untuk pemecah kata terdaftar, sumber daya linguistik terkait - stemmer, kata kebisingan (stopword), dan file tesaurus - juga tersedia untuk operasi pengindeksan dan kueri teks lengkap.
Untuk melihat daftar komponen pemecah kata terdaftar, gunakan pernyataan berikut.
EXEC sp_help_fulltext_system_components 'wordbreaker';
GO
Untuk opsi tambahan dan info selengkapnya, lihat sp_help_fulltext_system_components (Transact-SQL).
Jika Anda menambahkan atau menghapus pemecah kata
Jika Anda menambahkan, menghapus, atau mengubah pemecah kata, Anda perlu menyegarkan daftar pengidentifikasi lokal Microsoft Windows (LCID) yang didukung untuk pengindeksan dan kueri teks lengkap. Untuk informasi selengkapnya, lihat Menampilkan atau Mengubah Filter Terdaftar dan Pemecah Kata.
Mengatur opsi bahasa teks lengkap default
Untuk versi SQL Server yang dilokalkan, Penyiapan SQL Server mengatur opsi bahasa teks lengkap default ke bahasa server jika ada kecocokan yang sesuai. Untuk versi SQL Server yang tidak dilokalkan, opsi bahasa teks lengkap default adalah bahasa Inggris.
Saat membuat atau mengubah indeks teks lengkap, Anda dapat menentukan bahasa yang berbeda untuk setiap kolom terindeks teks lengkap. Jika tidak ada bahasa yang ditentukan untuk kolom, defaultnya adalah nilai opsi konfigurasi bahasa teks lengkap default.
Catatan
Semua kolom yang tercantum dalam satu klausul fungsi kueri teks lengkap harus menggunakan bahasa yang sama, kecuali opsi LANGUAGE ditentukan dalam kueri. Bahasa yang digunakan untuk kolom terindeks teks lengkap yang sedang dikueri menentukan analisis linguistik yang dilakukan pada argumen predikat kueri teks lengkap (CONTAINS dan FREETEXT) dan fungsi (CONTAINSTABLE dan FREETEXTTABLE).
Pilih bahasa untuk kolom terindeks
Saat membuat indeks teks lengkap, kami sarankan Anda menentukan bahasa untuk setiap kolom terindeks. Jika bahasa tidak ditentukan untuk kolom, bahasa default sistem akan digunakan. Bahasa kolom menentukan pemecah kata dan stemmer mana yang digunakan untuk mengindeks kolom tersebut. Selain itu, file thesaurus bahasa tersebut akan digunakan oleh kueri teks lengkap pada kolom.
Ada beberapa hal yang perlu dipertimbangkan saat memilih bahasa kolom untuk membuat indeks teks lengkap. Pertimbangan ini berkaitan dengan bagaimana teks Anda ditokenisasi lalu diindeks oleh Mesin Teks Lengkap. Untuk informasi selengkapnya, lihat Memilih Bahasa Saat Membuat Indeks Teks Lengkap.
Untuk menampilkan bahasa pemecah kata dari kolom tertentu, jalankan pernyataan berikut.
SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;
Untuk opsi tambahan dan info selengkapnya, lihat sys.fulltext_index_columns (Transact-SQL).
Memecahkan masalah kesalahan waktu habis pemecahan kata
Kesalahan waktu habis pemecahan kata dapat terjadi dalam berbagai situasi. atau informasi tentang situasi ini dan cara merespons dalam setiap situasi, lihat MSSQLSERVER_30053.
Info tentang kesalahan MSSQLSERVER_30053
Properti | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 30053 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | FTXT_QUERY_E_WORDBREAKINGTIMEOUT |
Teks Pesan | Waktu pemecahan kata habis untuk string kueri teks lengkap. Ini dapat terjadi jika pemecah kata membutuhkan waktu lama untuk memproses string kueri teks lengkap, atau jika sejumlah besar kueri berjalan di server. Coba jalankan kueri lagi di bawah beban yang lebih ringan. |
Penjelasan
Kesalahan batas waktu pemecahan kata dapat terjadi dalam situasi berikut:
Pemecah kata untuk bahasa kueri dikonfigurasi dengan salah; misalnya, pengaturan registrinya salah.
Kerusakan pemecah kata untuk string kueri tertentu.
Pemecah kata mengembalikan terlalu banyak data untuk string kueri tertentu. Kelebihan data diperlakukan sebagai potensi serangan buffer overrun, dan mematikan proses daemon filter (fdhost.exe), yang menghosting layanan pemecah kata.
Konfigurasi proses daemon filter salah.
Masalah konfigurasi yang paling umum adalah kedaluwarsa kata sandi atau kebijakan domain yang mencegah akun daemon filter masuk.
Beban kerja kueri yang sangat berat berjalan pada instans server; misalnya, pemecah kata membutuhkan waktu lama untuk memproses string kueri teks lengkap, atau sejumlah besar kueri berjalan di server. Perhatikan bahwa ini adalah penyebab paling tidak mungkin.
Tindakan Pengguna
Pilih tindakan pengguna yang sesuai dengan kemungkinan penyebab waktu habis, sebagai berikut:
Kemungkinan penyebab | Tindakan pengguna |
---|---|
Pemecah kata untuk bahasa kueri dikonfigurasi dengan tidak benar. | Jika Anda menggunakan pemecah kata pihak ketiga, itu mungkin salah terdaftar dengan sistem operasi. Dalam hal ini, daftarkan ulang pemecah kata. Untuk informasi selengkapnya, lihat Mengembalikan Pemecah Kata yang Digunakan oleh Pencarian ke Versi Sebelumnya. |
Kerusakan pemecah kata untuk string kueri tertentu. | Jika pemecah kata didukung oleh SQL Server, hubungi Layanan dan Dukungan Pelanggan Microsoft. |
Pemecah kata mengembalikan terlalu banyak data untuk string kueri tertentu. | Jika pemecah kata didukung oleh SQL Server, hubungi Layanan dan Dukungan Pelanggan Microsoft. |
Konfigurasi proses daemon filter salah. | Pastikan Anda menggunakan kata sandi saat ini dan bahwa kebijakan domain tidak mencegah akun daemon filter masuk. |
Beban kerja kueri yang sangat berat berjalan pada instans server. | Coba jalankan kueri lagi di bawah beban yang lebih ringan. |
Memahami dampak pemecah kata yang diperbarui
Setiap versi SQL Server biasanya mencakup pemutus kata baru yang memiliki aturan linguistik yang lebih baik dan lebih akurat daripada pemecah kata sebelumnya. Berpotensi, pemecah kata baru mungkin bertingkah sedikit berbeda dari pemecah kata dalam indeks teks lengkap yang diimpor dari versi SQL Server sebelumnya.
Ini signifikan jika katalog teks lengkap diimpor ketika database ditingkatkan ke versi SQL Server saat ini. Satu atau beberapa bahasa yang digunakan oleh indeks teks lengkap dalam katalog teks lengkap sekarang mungkin dikaitkan dengan pemecah kata baru. Untuk informasi selengkapnya, lihat Meningkatkan Pencarian Teks Lengkap.
Lihat Juga
MEMBUAT INDEKS FULLTEXT (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
Mengonfigurasi dan Mengelola Stopwords dan Stoplist untuk Pencarian Teks Lengkap