Câu trả lời được chấp nhận không phải là hoàn toàn chính xác. Việc bao gồm cụm từ tìm kiếm trong dấu ngoặc kép làm cho việc nhóm các từ phù hợp với cụm từ "". Trong trường hợp này, ampsersand (&
) có thể được coi là ký tự chữ, chẳng hạn như khi được bao quanh bởi một hoặc nhiều chữ cái không tạo thành từ đã biết. Chỉ cần nhìn vào "AT&T"
ví dụ của bạn, chúng ta thấy:
DECLARE @Term NVARCHAR(100);
SET @Term = N'"AT&T"';
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 1);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 1);
GO
Returns:
keyword group phrase occurrence special display expansion source
id id term term type term
0x0061007400260074 1 0 1 Exact Match at&t 0 AT&T
Như bạn có thể thấy, dấu và trình bày không có vấn đề gì cả, miễn là nó được bao trong dấu nháy kép ("
) mà bạn đã và đang làm, hoo hoo!
Tuy nhiên, điều đó không làm việc như sạch cho "Johnson & Johnson"
dụ:
DECLARE @Term NVARCHAR(100);
SET @Term = N'"Johnson & Johnson"';
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 1);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 1);
GO
Returns:
keyword group phrase occurrence special display expansion source
id id term term type term
0x006A006F0068006E0073006F006E 1 0 1 Exact Match johnson 0 Johnson & Johnson
0x006A006F0068006E0073006F006E 1 0 2 Exact Match johnson 0 Johnson & Johnson
Đó dường như cũng để phù hợp với cụm từ tìm kiếm của Johnson Johnson
, mà không phải là về mặt kỹ thuật chính xác.
Vì vậy, ngoài việc kèm theo trong dấu nháy kép, bạn cũng có thể chuyển đổi dấu và trở thành một dấu gạch dưới (_
) được xử lý khác nhau:
DECLARE @Term NVARCHAR(100);
SET @Term = N'"Johnson _ Johnson"';
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 1);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 1);
GO
Returns:
keyword group phrase occurrence special display expansion source
id id term term type term
0x006A006F0068006E0073006F006E 1 0 1 Exact Match johnson 0 Johnson _ Johnson
0x005F 1 0 2 Exact Match _ 0 Johnson _ Johnson
0x006A006F0068006E0073006F006E 1 0 3 Exact Match johnson 0 Johnson _ Johnson
VÀ , làm một bản dịch ký tự đó dường như không ảnh hưởng bất lợi đến việc tìm kiếm "AT&T"
gốc ban đầu:
DECLARE @Term NVARCHAR(100);
SET @Term = N'"AT_T"';
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, 0, 1);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 0);
SELECT * FROM sys.dm_fts_parser(@Term, 1033, NULL, 1);
Trả lại:
keyword group phrase occurrence special display expansion source
id id term term type term
0x00610074005F0074 1 0 1 Exact Match at_t 0 AT_T