Các hành vi lạ với tìm kiếm toàn văn trong máy chủ SQL


0 Phiếu
Đã hỏi 18/5/2016 bởi Panny_a (140 điểm)
Tôi có MyTable với một cột báo NVARCHAR (MAX). Kỷ lục với ID 1 chứa thư '0123456789333444 thử nghiệm' khi tôi chạy truy vấn sau đây
DECLARE @Keyword NVARCHAR(100)
SET @Keyword = '0123456789000001*'
SELECT *
FROM MyTable
WHERE CONTAINS(Message, @Keyword) 
kỷ lục ID 1 là hiển thị trong các kết quả và ý kiến của tôi nó nên không phải vì 0123456789333444 không có 0123456789000001. Ai đó có thể giải thích tại sao các bản ghi là hiển thị anyway? EDIT
select * from sys.dm_fts_parser('"0123456789333444 Test"',1033,0,0)
trả về như sau:
group_id phrase_id occurrence special_term  display_term        expansion_type source_term
1        0         1           Exact Match  0123456789333444    0              0123456789333444 Test
1        0         1           Exact Match  nn0123456789333444  0              0123456789333444 Test
1        0         2           Exact Match  test                0              0123456789333444 Test

1 câu trả lời

0 Phiếu
Đã trả lời 31/5/2016 bởi pumatritt (370 điểm)
Điều này là do sự không được bọc trong daáu ngoaëc. Mà lực lượng 0, một, hoặc nhiều hơn các trận đấu.
chỉ định một kết hợp của các từ hoặc các cụm từ bắt đầu bằng văn bản đã chỉ định. Kèm theo một thuật ngữ tiền tố trong dấu ngoặc kép ("") và thêm dấu hoa thị () trước khi đánh dấu ngoặc kép kết thúc, do đó tất cả văn bản bắt đầu với những thuật ngữ đơn giản, được chỉ định trước trong asterisk là phù hợp. Các khoản phải được xác định theo cách này: CONTAINS (cột, ' "văn bản "'). Dấu hoa thị phù hợp với zero, một hoặc nhiều ký tự (gốc từ hoặc các từ trong từ hoặc cụm từ). Nếu các văn bản và dấu không được phân cách bằng dấu ngoặc kép, như vậy vị ngữ đọc CONTAINS (cột, 'văn bản *'), tìm kiếm văn bản đầy đủ xem xét dấu hoa thị như là một character và tìm kiếm các kết hợp chính xác cho văn bản *. Các công cụ văn bản đầy đủ sẽ không tìm thấy từ bằng dấu hoa thị (*) character vì máy cắt chữ thường bỏ qua các nhân vật như vậy. Khi là một cụm từ, mỗi từ trong cụm từ được coi là một tiền tố riêng biệt. Do đó, một query chỉ định một tiền tố thuật ngữ "địa phương rượu *" phù hợp với bất kỳ hàng nào với các văn bản của "nhà máy rượu địa phương", "địa phương vang và dined", và như vậy.
có một cái nhìn tại MSDN về chủ đề. MSDN

ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...