Mengonfigurasi dan mengelola pemecah kata dan stemmer

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Pemecah kata dan stemmer melakukan analisis linguistik pada semua data teks terindeks penuh. 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 sebuah kata tertentu berdasarkan aturan bahasa tersebut (misalnya, "berlari", "berlari-lari", dan "pelari" adalah berbagai bentuk dari kata "lari").

Pemecah kata dan stemmer khusus untuk bahasa tertentu

Pemecah kata dan stemmer bersifat khusus untuk setiap bahasa, dan aturan untuk analisis linguistik berbeda-beda tergantung pada bahasanya. 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 Mesin Database SQL Server, biasanya Anda tidak perlu melakukan apa pun.

  • Jika ada pemenggal kata untuk keluarga bahasa, tetapi tidak untuk sub-bahasa tertentu, bahasa induk 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 Full-Text Penelusuran, 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 dapat menggunakan pemecah kata untuk suatu bahasa, pemecah kata tersebut harus didaftarkan. Untuk pemecah kata terdaftar, sumber daya linguistik terkait juga tersedia untuk pengindeksan teks lengkap dan operasi kueri. Sumber daya ini meliputi stemmer, kata umum (stopword), dan berkas tesaurus.

Untuk melihat daftar komponen pemecah kata terdaftar, gunakan pernyataan berikut.

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Untuk informasi selengkapnya, lihat sp_help_fulltext_system_components.

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 Mengkustomisasi filter dan pemecah kata.

Mengatur opsi bahasa teks utuh standar

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 merupakan opsi bahasa teks lengkap default.

Catatan

Semua kolom yang tercantum dalam satu klausa fungsi kueri teks lengkap harus menggunakan bahasa yang sama, kecuali LANGUAGE opsi 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 Anda membuat indeks teks lengkap, tentukan bahasa untuk setiap kolom yang diindeks. 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 dipakai dalam 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 informasi selengkapnya, lihat sys.fulltext_index_columns.

Memecahkan masalah kesalahan batas waktu pada pemisahan kata

Kesalahan batas waktu pemecahan kata dapat terjadi dalam berbagai situasi. Untuk informasi tentang situasi ini dan cara merespons dalam setiap situasi, lihat MSSQLSERVER_30053.

Informasi tentang kesalahan MSSQLSERVER_30053

Kekayaan Nilai
Nama Produk SQL Server
ID Peristiwa 30053
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis FTXT_QUERY_E_WORDBREAKINGTIMEOUT
Teks Pesan Waktu pemrosesan kata habis untuk 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-situasi berikut ini:

  • Pemecah kata untuk bahasa kueri dikonfigurasi dengan tidak benar. Misalnya, pengaturan registrinya salah.

  • Kerusakan pemecah kata untuk string kueri tertentu.

  • Pemisah 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 tidak benar.

    Masalah konfigurasi yang paling umum adalah kedaluwarsa kata sandi atau kebijakan domain yang mencegah akun daemon filter masuk.

  • Beban kerja kueri yang sangat berat sedang dijalankan pada instans server. Misalnya, pemecah kata membutuhkan waktu lama untuk memproses string kueri teks lengkap, atau sejumlah besar kueri berjalan di server. 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 Full-Text Cari ke versi sebelumnya.
Kerusakan pemecah kata untuk string kueri tertentu. Jika pemecah kata didukung oleh Database Engine, hubungi Microsoft Customer Service and Support.
Pemisah kata mengembalikan terlalu banyak data untuk string kueri tertentu. Jika pemecah kata didukung oleh Database Engine, hubungi Microsoft Customer Service and Support.
Konfigurasi proses daemon filter tidak benar. Pastikan Anda menggunakan kata sandi saat ini dan bahwa kebijakan domain tidak mencegah akun daemon filter masuk.
Beban kerja kueri yang sangat berat sedang dijalankan pada instans server. Coba jalankan kueri lagi di bawah beban yang lebih ringan.

Memahami dampak pemecah kata yang diperbarui

Setiap versi Database Engine dapat menyertakan pemecah kata yang diperbarui dengan aturan linguistik yang direvisi. Pemecah kata yang diperbarui ini mungkin berperilaku berbeda dari pemecah kata dalam indeks teks lengkap yang diimpor dari versi Database Engine sebelumnya.

Ini penting jika katalog teks lengkap diimpor saat database ditingkatkan ke versi Database Engine 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 Tingkatkan Pencarian Teks Lengkap.