Vă mulțumim pentru susținere

De ce indexarea completă a textului SQL nu întoarce rezultatele cuvintelor care conțin #?

De exemplu, interogarea mea este la fel ca în cele ce urmează folosind SQL Server 2005:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 

Am un index de text complet definit pentru a folosi coloana SearchField care returnează rezultatele când se utilizează:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

Cred că # este o literă specială, așa cum permit FREETEXT să funcționeze corect pentru interogarea de mai sus?

0
adăugat editat
Doar o presupunere, dar ce zici de "c \\ #"?
adăugat autor Ryan Fox

2 răspunsuri

Citând o pagină de ajutor mult replicată despre limba de interogare a serviciului de indexare:

To use specially treated characters such as &, |, ^, #, @, $, (, ), in a query, enclose your query in quotation marks (?).

Din câte știu, căutarea full text în MSSQL este de asemenea efectuată de Serviciul de indexare, deci ar putea fi de ajutor.

0
adăugat

Caracterele # char sunt indexate ca punctuație și, prin urmare, ignorate, astfel încât se pare că vom elimina litera C din listele noastre de indexare a cuvintelor ignorate.

Testați-o la nivel local după ce faceți asta și reconstrucționați indicii și obțin rezultate!

Privind la folosirea unei limbi diferite de rupere a cuvintelor în coloana indexată, astfel încât acele caractere speciale să nu fie ignorate.

EDIT: De asemenea, am găsit aceste informații :

c # este indexat ca c (dacă c nu este în lista de cuvinte de zgomot, vedeți mai multe pe liste de cuvinte de zgomot mai târziu), dar C # este indexat ca C # (în SQL 2005 și SQL 2000 care rulează pe Win2003 indiferent dacă C sau c este în lista de cuvinte de zgomot). Nu este numai C # care este stocat ca C #, ci orice literă de capital urmată de #. În schimb, c ++ (și orice altă literă cu litere mici, urmată de un ++) este indexată ca c (indiferent dacă c este în lista de cuvinte de zgomot).

0
adăugat