Tôi gặp lỗi sau trong cơ sở dữ liệu SQL server 2008 R2 của mình:
Không thể sử dụng một
CONTAINS
hoặcFREETEXT
vị từ trên bảng hoặc chế độ xem được lập chỉ mục 'tblArmy' vì nó không được lập chỉ mục toàn văn.
Tôi gặp lỗi sau trong cơ sở dữ liệu SQL server 2008 R2 của mình:
Không thể sử dụng một
CONTAINS
hoặcFREETEXT
vị từ trên bảng hoặc chế độ xem được lập chỉ mục 'tblArmy' vì nó không được lập chỉ mục toàn văn.
Câu trả lời:
Đảm bảo rằng bạn đã cài đặt tính năng tìm kiếm toàn văn bản.
Tạo danh mục tìm kiếm toàn văn bản.
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
Tạo chỉ mục tìm kiếm toàn văn bản.
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
Trước khi bạn tạo chỉ mục, hãy đảm bảo:
- bạn chưa có chỉ mục tìm kiếm toàn văn trên bảng vì chỉ một chỉ mục tìm kiếm toàn văn được phép trên bảng
- chỉ mục duy nhất tồn tại trên bảng. Chỉ mục phải dựa trên cột một khóa, không cho phép NULL.
- danh mục toàn văn tồn tại. Bạn phải chỉ định tên danh mục toàn văn một cách rõ ràng nếu không có danh mục toàn văn mặc định.
Bạn có thể thực hiện bước 2 và 3 trong SQL Sever Management Studio. Trong trình khám phá đối tượng, nhấp chuột phải vào bảng, chọn Full-Text index
mục menu và sau đó chọn mục menu Define Full-Text Index...
phụ. Trình hướng dẫn lập chỉ mục toàn văn bản sẽ hướng dẫn bạn trong suốt quá trình. Nó cũng sẽ tạo một danh mục tìm kiếm toàn văn cho bạn nếu bạn chưa có.
Bạn có thể tìm thêm thông tin tại MSDN
Một giải pháp cho CONTAINS
: Nếu bạn không muốn tạo Chỉ mục toàn văn trên cột và hiệu suất không phải là một trong những ưu tiên của bạn, bạn có thể sử dụng LIKE
câu lệnh không cần bất kỳ cấu hình trước nào:
Ví dụ: tìm tất cả các Sản phẩm có chứa chữ Q:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
Bạn phải xác định Full-Text-Index
trên tất cả các bảng trong cơ sở dữ liệu nơi bạn yêu cầu sử dụng truy vấn CONTAINS
mà sẽ mất một lúc.
Thay vào đó, bạn có thể sử dụng LIKE
cái sẽ cho bạn kết quả tức thì mà không cần điều chỉnh bất kỳ cài đặt nào cho bảng.
Thí dụ:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
Kết quả tương tự thu được với CONTAINS
có thể thu được với LIKE
.
Bạn có thể cần bật bảng để lập chỉ mục toàn văn .
bạn phải thêm chỉ mục văn bản đầy đủ trên các trường cụ thể mà bạn muốn tìm kiếm.
ALTER TABLE news ADD FULLTEXT(headline, story);
trong đó "tin tức" là bảng của bạn và các trường "tiêu đề, tin bài" mà bạn không muốn bật cho tìm kiếm toàn văn
Có một giải pháp nữa để đặt Toàn văn cột thành true.
Ví dụ, giải pháp này không hoạt động với tôi
ALTER TABLE news ADD FULLTEXT(headline, story);
Giải pháp của tôi.
BƯỚC TIẾP THEO
Làm tươi
Phiên bản mssql 2014
Select * from table
where CONTAINS([Column], '"A00*"')
sẽ hoạt động như% giống như
where [Column] Like 'A00%'