Kabul edilen yanıt tamamen doğru değil. Arama terimini çift tırnak içine almak, kelimelerin gruplamasını "ifade" eşleşmesini sağlar. Bu durumda, (&
) ve (&
), bilinen bir sözcük oluşturmayan bir veya daha fazla harf tarafından çevrelenmiş gibi bir tam karakter olarak ele alınabilir. Sadece "AT&T"
örneğe bakarak, gördüğümüz:
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
İade:
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
Gördüğünüz gibi, ve işareti o (çift tırnak içine alınır sürece, hiçbir sorun teşkil "
) zaten yapıyorsun, hoo hoo!
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
İade: "Johnson & Johnson"
örneğin temiz bir şekilde çalışmaz Ancak
,
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
da değil, hangi
Johnson Johnson
bir aradığı terime görünüyor
teknik olarak doğru.
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
İade:
Yani, çift tırnak içinde kapsayan ek olarak, aynı zamanda farklı şekilde ele alınır bir alt çizgi (_
) olmak işareti dönüştürebilirsiniz
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
VE Bu bir karakter çeviri yapmak orijinal "AT&T"
arama olumsuz etkilemiyor gibi görünüyor:
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);