Saya mendapatkan kesalahan berikut dalam database SQL server 2008 R2 saya:
Tidak dapat menggunakan
CONTAINS
atauFREETEXT
predikat pada tabel atau tampilan terindeks 'tblArmy' karena tidak diindeks teks lengkap.
Saya mendapatkan kesalahan berikut dalam database SQL server 2008 R2 saya:
Tidak dapat menggunakan
CONTAINS
atauFREETEXT
predikat pada tabel atau tampilan terindeks 'tblArmy' karena tidak diindeks teks lengkap.
Jawaban:
Pastikan Anda telah menginstal fitur pencarian teks lengkap.
Buat katalog pencarian teks lengkap.
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
Buat indeks pencarian teks lengkap.
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
Sebelum Anda membuat indeks, pastikan:
- Anda belum memiliki indeks pencarian teks lengkap di tabel karena hanya satu indeks pencarian teks lengkap yang diperbolehkan di tabel
- indeks unik ada di tabel. Indeks harus didasarkan pada kolom kunci tunggal, yang tidak memungkinkan NULL.
- katalog teks lengkap ada. Anda harus menentukan nama katalog teks lengkap secara eksplisit jika tidak ada katalog teks lengkap default.
Anda dapat melakukan langkah 2 dan 3 di SQL Sever Management Studio. Di penjelajah objek, klik kanan pada tabel, pilih Full-Text index
item menu, lalu item Define Full-Text Index...
sub-menu. Wizard pengindeksan Teks Lengkap akan memandu Anda melalui proses tersebut. Ini juga akan membuat katalog pencarian teks lengkap untuk Anda jika Anda belum memilikinya.
Anda dapat menemukan info lebih lanjut di MSDN
Solusi untuk CONTAINS
: Jika Anda tidak ingin membuat Indeks teks lengkap pada kolom, dan kinerja bukan salah satu prioritas Anda, Anda dapat menggunakan LIKE
pernyataan yang tidak memerlukan konfigurasi sebelumnya:
Contoh: temukan semua Produk yang mengandung huruf Q:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
Anda harus menentukan Full-Text-Index
pada semua tabel dalam database di mana Anda perlu menggunakan kueri CONTAINS
yang akan memakan waktu.
Sebagai gantinya Anda dapat menggunakan LIKE
yang akan memberi Anda hasil instan tanpa perlu menyesuaikan pengaturan apa pun untuk tabel.
Contoh:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
Hasil yang sama yang diperoleh dengan CONTAINS
dapat diperoleh dengan LIKE
.
Anda mungkin perlu mengaktifkan tabel untuk pengindeksan teks lengkap .
Anda harus menambahkan indeks teks lengkap pada bidang tertentu yang ingin Anda cari.
ALTER TABLE news ADD FULLTEXT(headline, story);
di mana "berita" adalah tabel Anda dan kolom "judul, berita" yang tidak akan Anda aktifkan untuk pencarian teks lengkap
Ada satu solusi lagi untuk menyetel kolom Full text menjadi true.
Solusi ini misalnya tidak berhasil untuk saya
ALTER TABLE news ADD FULLTEXT(headline, story);
Solusi saya.
LANGKAH SELANJUTNYA
Menyegarkan
Versi mssql 2014
Select * from table
where CONTAINS([Column], '"A00*"')
akan bertindak sebagai% sama dengan
where [Column] Like 'A00%'