Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server chứa chức năng văn bản đầy đủ không trả lại kết quả mong đợi

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lệnh SQL try-catch không xử lý được lỗi (SQL Server 2008)

  2. CÓ NHIỀU CHĂN NUÔI? Cần tính theo giờ mỗi tháng

  3. phân tách các giá trị được phân tách bằng dấu phẩy và lưu trữ trong bảng trong máy chủ sql

  4. UNION ALL có đảm bảo thứ tự của tập kết quả không

  5. Batch Mode Bitmaps trong SQL Server