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.
sql
sql-server
tsql
sql-server-2008
full-text-search
DotnetSparrow
sumber
sumber
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 itemDefine 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
sumber
Solusi untuk
CONTAINS
: Jika Anda tidak ingin membuat Indeks teks lengkap pada kolom, dan kinerja bukan salah satu prioritas Anda, Anda dapat menggunakanLIKE
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%'
sumber
Anda harus menentukan
Full-Text-Index
pada semua tabel dalam database di mana Anda perlu menggunakan kueriCONTAINS
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 denganLIKE
.lihat hasilnya:
sumber
Anda mungkin perlu mengaktifkan tabel untuk pengindeksan teks lengkap .
sumber
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
sumber
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
sumber
Select * from table where CONTAINS([Column], '"A00*"')
akan bertindak sebagai% sama dengan
sumber