Trong Fulltext, tất cả các ký tự không chữ và số đều bị xóa trong chỉ mục và được thay thế bằng khoảng trống Vì vậy, trong tìm kiếm của bạn, vì bạn đã có "." trong chuỗi, bạn đang tìm kiếm "trang web" và "net".
Bạn có thể sửa lỗi này theo 2 cách.
Bạn cần có một bảng riêng biệt hoặc trường riêng biệt có dữ liệu toàn văn, được tách biệt khỏi bảng gốc là bạn vẫn giữ dữ liệu ban đầu.
Trong bảng đầy đủ, bạn có thể xóa ". "và lưu trữ" websitenet ".
Trong trường hợp đó, bạn cần xóa tất cả "." từ chuỗi tìm kiếm trước khi bạn thực hiện truy vấn. Nếu bạn muốn truy vấn bằng ".", Bạn cần thay thế "." với một chuỗi ký tự -ví dụ "dấu chấm".
Vì vậy, trong trường hợp này, bạn sẽ lưu trữ " websitedotnet ".
Khi bạn tìm kiếm lần này, bạn thay thế tất cả "." với "dấu chấm" trong truy vấn.
OK bây giờ trường hợp của bạn với một trường mới lưu trữ cột để FTS tìm kiếm như vậy:
ID DESCRIPTION DESCFTS
-----------------------------------------------------
1 this is a website. this is a websitedot
2 a website exists. a website existsdot
3 go to mywebsite.net go to mywebsitedotnet
4 go to mywebsite.net. go to mywebsitedotnetdot
sau đó truy vấn của bạn:
declare @search_client nvarchar(100) = 'website'
set @search_client = replace(@search_client, '.', 'dot')
select * from dbo.temp where contains ((DESCFTS), @search_client)