Meningkatkan Pencarian Full-Text (Pencarian SQL Server)

Berlaku untuk:SQL Server

SQL Server meningkatkan pencarian teks lengkap selama penyiapan, atau saat Anda melampirkan, memulihkan, atau menyalin file database dan katalog teks lengkap dari SQL Server 2005 (9.x) dan versi yang lebih lama.

Memutakhirkan instans server

Untuk peningkatan di tempat, instans SQL Server disiapkan berdampingan dengan versi lama SQL Server, dan data dimigrasikan. Jika versi lama SQL Server telah menginstal pencarian teks lengkap, versi baru pencarian teks lengkap secara otomatis diinstal. Penginstalan berdampingan berarti bahwa masing-masing komponen berikut ada di tingkat instans SQL Server.

Pemecah kata, stemmer, dan filter

Setiap instans kini menggunakan kumpulan pemecah kata, stemmer, dan filter sendiri, alih-alih bergantung pada komponen versi sistem operasi. Komponen-komponen ini juga lebih mudah didaftarkan dan dikonfigurasi pada tingkat per instans. Untuk informasi selengkapnya, lihat Mengonfigurasi dan mengelola pemecah kata dan stemmer serta Mengonfigurasi dan mengelola filter.

Daemon host filter

Host daemon filter untuk teks lengkap adalah proses yang dapat memuat dan menjalankan komponen eksternal yang dapat diperluas dengan aman yang digunakan untuk indeks dan kueri, seperti pemecah kata, para stemmer, dan filter-filter, tanpa mengorbankan integritas Mesin Teks Lengkap. Instans server menggunakan proses multithreaded untuk semua filter berutas ganda dan proses berutas tunggal untuk semua filter berutas tunggal.

Layanan FDHOST Launcher (MSSQLFDLauncher) menyebarkan informasi akun layanan ke proses host daemon filter dari instans tertentu dari Database Engine. Untuk informasi tentang cara menyetel akun layanan, lihat Setel akun layanan untuk Peluncur Daemon Filter Teks Lengkap.

Kompatibilitas peningkatan SQL Server 2005

Katalog teks lengkap adalah objek logis atau virtual yang berisi sekelompok indeks teks lengkap. Oleh karena itu, katalog teks lengkap baru tidak diperlakukan sebagai file database dengan jalur fisik. Namun, jika Anda memutakhirkan dari SQL Server 2005 (9.x), grup file baru dibuat pada disk yang sama untuk katalog teks lengkap apa pun yang berisi file data.

Prosedur ini mempertahankan perilaku I/O disk lama setelah peningkatan. Indeks teks lengkap dari katalog tersebut ditempatkan di grup file baru jika jalur akar ada. Jika jalur katalog teks lengkap lama tidak valid, peningkatan menyimpan indeks teks-penuh dalam grup file yang sama dengan tabel dasar atau, untuk tabel yang dipartisi, di grup file utama.

Opsi pemutakhiran teks lengkap

Saat Anda memutakhirkan instans SQL Server, antarmuka pengguna memungkinkan Anda memilih salah satu opsi peningkatan teks lengkap berikut. Opsi ini hanya tersedia untuk database SQL Server 2005 (9.x).

Import

Katalog teks lengkap diimpor. Biasanya, impor secara signifikan lebih cepat daripada membangun kembali. Misalnya, dengan hanya satu inti CPU, impor berjalan sekitar 10 kali lebih cepat daripada membangun kembali. Namun, katalog teks lengkap yang diimpor tidak menggunakan pemecah kata baru yang diinstal dengan versi terbaru SQL Server. Untuk memastikan konsistensi dalam hasil kueri, katalog teks lengkap harus dibangun kembali.

Catatan

Rebuild dapat berjalan dalam mode multithreaded, dan jika lebih dari 10 inti CPU tersedia, rebuild mungkin berjalan lebih cepat daripada impor jika Anda mengizinkan rebuild untuk menggunakan semua core.

Jika katalog teks lengkap tidak tersedia, indeks teks lengkap terkait dibangun kembali.

Untuk informasi tentang efek mengimpor indeks teks lengkap, lihat Pertimbangan untuk memilih opsi peningkatan teks lengkap nanti dalam artikel ini.

Rebuild

Katalog teks lengkap dibangun ulang menggunakan pemecah kata versi saat ini. Membangun ulang indeks dapat memakan waktu cukup lama, dan sejumlah besar CPU dan memori mungkin diperlukan setelah peningkatan.

Reset

Katalog teks lengkap diatur ulang. Saat Anda memutakhirkan dari SQL Server 2005 (9.x), file katalog teks lengkap dihapus, tetapi metadata untuk katalog teks lengkap dan indeks teks lengkap dipertahankan. Setelah ditingkatkan, semua indeks teks lengkap dinonaktifkan untuk pelacakan perubahan dan perayapan tidak dimulai secara otomatis. Katalog akan tetap kosong sampai Anda mengeluarkan populasi penuh secara manual, setelah peningkatan selesai.

Pertimbangan untuk memilih opsi peningkatan teks lengkap

Saat Anda memilih opsi peningkatan, pertimbangkan hal berikut:

  • Apakah Anda memerlukan konsistensi dalam hasil kueri?

    Mesin Database menginstal pemisah kata baru untuk digunakan oleh Full-Text dan Pencarian Semantik. Pemecah kata digunakan baik pada waktu pengindeksan maupun pada waktu kueri. Jika Anda tidak membangun kembali katalog teks lengkap, hasil pencarian Anda mungkin tidak konsisten. Jika Anda menjalankan kueri teks lengkap yang mencari frasa yang diuraikan secara berbeda oleh pemecah kata pada versi Database Engine sebelumnya dan pemecah kata saat ini, dokumen atau baris yang berisi frasa tersebut mungkin tidak ditemukan. Ini karena frasa terindeks rusak menggunakan logika yang berbeda dari yang digunakan kueri. Solusinya adalah mengisi ulang (membangun kembali) katalog teks lengkap dengan pemecah kata baru sehingga waktu indeks dan perilaku waktu kueri identik. Anda dapat memilih opsi Bangun kembali untuk melakukannya, atau Anda dapat membangun ulang secara manual setelah memilih opsi Impor .

  • Apakah ada indeks teks lengkap yang dibangun pada kolom kunci teks lengkap bilangan bulat?

    Pemrosesan ulang melaksanakan pengoptimalan internal yang meningkatkan kinerja kueri dari indeks teks lengkap yang ditambahkan ke dalam beberapa kasus. Secara khusus, jika Anda memiliki katalog teks lengkap yang berisi indeks teks lengkap di mana kolom kunci teks lengkap tabel dasar adalah jenis data bilangan bulat, pembangunan ulang mencapai performa ideal kueri teks lengkap setelah peningkatan. Dalam hal ini, Anda harus menggunakan opsi Rebuild .

    Catatan

    Untuk indeks teks lengkap, kolom yang berfungsi sebagai kunci teks lengkap harus berupa tipe data bilangan bulat. Untuk informasi selengkapnya, lihat Meningkatkan performa indeks teks lengkap.

  • Apa prioritas untuk membuat instans server Anda online?

    Mengimpor atau pembangunan ulang selama peningkatan memerlukan banyak sumber daya CPU, yang mengakibatkan penundaan proses peningkatan dan pengaktifan instans server lainnya. Jika membuat instans server online sesegera mungkin penting dan jika Anda bersedia menjalankan populasi manual setelah peningkatan, Reset cocok.

Memastikan hasil kueri yang konsisten setelah mengimpor indeks teks lengkap

Jika katalog teks lengkap diimpor saat Anda memutakhirkan database SQL Server 2005 (9.x), ketidakcocokan antara kueri dan konten indeks teks lengkap mungkin terjadi karena perbedaan perilaku pemecah kata lama dan baru. Dalam hal ini, untuk menjamin kecocokan total antara kueri dan konten indeks teks lengkap, pilih salah satu opsi berikut:

  • Bangun ulang katalog teks lengkap yang berisi indeks teks lengkap dengan ALTER FULLTEXT CATALOG:

    ALTER FULLTEXT CATALOG <catalog_name> REBUILD;
    
  • Jalankan FULL POPULATION pada indeks teks penuh dengan ALTER FULLTEXT INDEX:

    ALTER FULLTEXT INDEX ON <table_name> START FULL POPULATION;
    

Untuk informasi selengkapnya tentang pemecah kata, lihat Mengonfigurasi dan mengelola pemecah kata dan stemmer.

Meningkatkan file noise-word ke daftar berhenti

Ketika database ditingkatkan dari SQL Server 2005 (9.x), file noise-word tidak lagi digunakan. Namun, file noise-word lama disimpan di FTDATA\FTNoiseThesaurusBak folder, dan Anda dapat menggunakannya nanti saat memperbarui atau membangun daftar stop SQL Server yang sesuai.

Setelah memutakhirkan dari SQL Server 2005 (9.x):

  • Jika Anda tidak pernah menambahkan, memodifikasi, atau menghapus file noise-word apa pun dalam penginstalan SQL Server 2005 (9.x), daftar henti sistem harus memenuhi kebutuhan Anda.

  • Jika file noise-word Anda dimodifikasi di SQL Server 2005 (9.x), modifikasi tersebut hilang selama peningkatan. Untuk membuat ulang pembaruan tersebut, Anda harus membuat ulang modifikasi tersebut secara manual dalam daftar pengecualian yang sesuai. Untuk informasi selengkapnya, lihat ALTER FULLTEXT STOPLIST .

  • Jika Anda tidak ingin menerapkan stopword apa pun ke indeks teks lengkap Anda (misalnya, jika Anda menghapus atau menghilangkan file noise-word di pemasangan SQL Server 2005 (9.x)), Anda harus menonaktifkan daftar henti untuk setiap indeks teks lengkap yang telah ditingkatkan. Jalankan pernyataan Transact-SQL berikut (mengganti database dengan nama database dan tabel yang ditingkatkan dengan nama tabel):

    USE [database];
    GO
    
    ALTER FULLTEXT INDEX ON [table]
    SET STOPLIST OFF;
    GO
    

    Klausa STOPLIST OFF menghapus pemfilteran stop word dan memicu pengisian tabel, tanpa memfilter kata apa pun yang dianggap sebagai derau.

Mencadangkan dan mengimpor katalog teks lengkap

Untuk katalog teks lengkap yang dibangun ulang atau diatur ulang selama pemutakhiran (dan untuk katalog teks lengkap baru), katalog teks lengkap adalah konsep logis dan tidak berada dalam grup file. Oleh karena itu, untuk membuat cadangan katalog lengkap, Anda harus mengidentifikasi setiap grup file yang berisi indeks lengkap katalog dan mencadangkan masing-masing satu demi satu. Untuk informasi selengkapnya, lihat Mencadangkan dan memulihkan katalog dan indeks teks lengkap.

Untuk katalog teks lengkap yang telah diimpor dari SQL Server 2005 (9.x), katalog teks lengkap masih merupakan file database dalam grup filenya sendiri. Proses pencadangan SQL Server 2005 (9.x) untuk katalog teks lengkap masih berlaku kecuali bahwa layanan MSFTESQL tidak ada di SQL Server. Untuk informasi tentang proses SQL Server 2005 (9.x), lihat Mencadangkan dan Memulihkan Katalog Teks Lengkap di Buku SQL Server 2005 Online.

Memigrasikan indeks teks lengkap saat memutakhirkan database

File database dan katalog teks lengkap dari versi SQL Server sebelumnya dapat dimutakhirkan ke instans yang ada dengan menggunakan lampirkan, pulihkan, atau Wizard Salin Database. Indeks teks lengkap SQL Server 2005 (9.x), jika ada, diimpor, direset, atau dibangun ulang. Properti upgrade_option server menentukan opsi peningkatan teks lengkap mana yang digunakan instans server selama peningkatan database ini.

Setelah Anda melampirkan, memulihkan, atau menyalin database SQL Server 2005 (9.x) ke instans yang lebih baru, database akan segera tersedia dan kemudian ditingkatkan secara otomatis. Bergantung pada jumlah data yang diindeks, impor dapat memakan waktu beberapa jam, dan pembangunan ulang dapat memakan waktu hingga 10 kali lebih lama. Saat opsi peningkatan diatur ke impor, jika katalog teks lengkap tidak tersedia, indeks teks lengkap terkait dibangun kembali.

Mengubah perilaku peningkatan teks lengkap pada instans server

Pertimbangan untuk memulihkan katalog teks lengkap SQL Server 2005 (9.x)

Salah satu metode untuk memutakhirkan data teks lengkap dari database SQL Server 2005 (9.x) adalah dengan memulihkan cadangan database lengkap ke instans SQL Server yang lebih baru.

Saat mengimpor katalog teks lengkap SQL Server 2005 (9.x), Anda dapat mencadangkan dan memulihkan database dan file katalog. Perilakunya sama seperti di SQL Server 2005 (9.x):

  • Pencadangan database lengkap mencakup katalog teks lengkap. Untuk merujuk ke katalog teks lengkap, gunakan nama file SQL Server 2005 (9.x), sysft_+catalog-name.

  • Jika katalog teks lengkap offline, pencadangan gagal.

Untuk informasi selengkapnya tentang mencadangkan dan memulihkan katalog teks lengkap SQL Server 2005 (9.x), lihat Mencadangkan dan memulihkan katalog teks lengkap dan indeks serta Pencadangan dan Pemulihan File dan Katalog Full-Text di Buku Online SQL Server 2005 (9.x).

Saat database dipulihkan pada instans SQL Server yang lebih baru, file database baru dibuat untuk katalog teks lengkap. Nama default file ini adalah ftrow_catalog-name.ndf. Misalnya, jika nama katalog Anda adalah cat1, nama default file database SQL Server adalah ftrow_cat1.ndf. Tetapi jika nama default sudah digunakan di direktori target, file database baru akan diberi nama ftrow_katalog{GUID,}.ndf di mana GUID adalah pengidentifikasi unik global dari file baru.

Setelah katalog diimpor, sys.database_files dan sys.master_files diperbarui untuk menghapus entri katalog, dan kolom path di sys.fulltext_catalogs diatur ke NULL.

Mencadangkan sebuah database

Memulihkan cadangan database

Contoh

Contoh berikut menggunakan MOVE klausa dalam RESTORE pernyataan untuk memulihkan database SQL Server 2005 (9.x) bernama ftdb1. Database, log, dan file katalog SQL Server 2005 (9.x) dipindahkan ke lokasi baru pada instans server SQL Server, sebagai berikut:

  • File database, ftdb1.mdf, dipindahkan ke C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf.

  • File log, ftdb1_log.ldf, dipindahkan ke direktori log pada drive disk log Anda, log_drive:\log_directory.\ftdb1_log.ldf

  • File katalog yang sesuai dengan sysft_cat90 katalog dipindahkan ke C:\temp. Setelah indeks teks lengkap diimpor, indeks tersebut secara otomatis ditempatkan dalam file database, C:\ftrow_sysft_cat90.ndf, dan C:\temp akan dihapus.

RESTORE DATABASE [ftdb1] FROM DISK = N'C:\temp\ftdb1.bak'
    WITH FILE = 1,
    MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

Mengaitkan database SQL Server 2005

Di SQL Server 2008 (10.0.x) dan versi yang lebih baru, katalog teks lengkap adalah konsep logis yang mengacu pada sekelompok indeks teks lengkap. Katalog teks lengkap adalah objek virtual yang bukan milik grup file apa pun. Namun, ketika Anda melampirkan database SQL Server 2005 (9.x) yang berisi file katalog teks lengkap ke instans server SQL Server yang lebih baru, file katalog dilampirkan dari lokasi sebelumnya bersama dengan file database lainnya, sama seperti di SQL Server 2005 (9.x).

Status setiap katalog teks lengkap yang dilampirkan di SQL Server sama seperti ketika database dilepas dari SQL Server 2005 (9.x). Jika ada populasi indeks teks lengkap yang ditangguhkan oleh operasi pelepasan, populasi tersebut dilanjutkan di SQL Server, dan indeks teks lengkap menjadi tersedia untuk pencarian teks lengkap.

Jika SQL Server tidak dapat menemukan file katalog teks lengkap, atau jika file teks lengkap dipindahkan selama operasi lampirkan tanpa menentukan lokasi baru, perilaku bergantung pada opsi peningkatan teks lengkap yang dipilih. Jika opsi peningkatan teks lengkap adalah Impor atau Bangun Ulang, katalog teks lengkap yang dilampirkan dibangun kembali. Jika opsi peningkatan teks lengkap adalah Reset, katalog teks lengkap yang dilampirkan akan diatur ulang.

Untuk informasi selengkapnya tentang melepaskan dan melampirkan database, lihat Melepaskan dan melampirkan database, CREATE DATABASE, sp_attach_db, dan sp_detach_db.