Hoekom nie Volledige inligting kruip terugkeer resultate vir woorde met # SQL?
-
08-06-2019 - |
Vra
Byvoorbeeld, my navraag is soos die volgende met behulp van SQL Server 2005:
SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')
Ek het 'n volledige teks indeks gedefinieer vir die kolom Soekveld wat resultate terug by die gebruik van gebruik:
SELECT * FROM Table WHERE SearchField LIKE '%c#%'
Ek glo # is 'n spesiale brief, so hoe kan ek toelaat dat free text om korrek te werk vir die navraag bo?
Oplossing
Die # char geïndekseer as punktuasie en dus geïgnoreer, sodat dit lyk asof ons die letter C van ons woord kruip sal verwyder ignoreer lyste.
getoets plaaslik daarna doen en die herstel van die indekse en ek kry resultate!
As ons kyk na 'n ander woord breker taal op die geïndekseerde kolom, sodat dié spesiale karakters word nie geïgnoreer word nie.
EDIT: Ek het ook bevind hierdie inligting :
c # geïndekseer as c (indien c is nie in jou geraas woord lys, sien meer oor geraas woordelyste later), maar C # geïndekseer as C # (in SQL 2005 en SQL 2000 loop op Win2003, ongeag of C of c is in jou geraas woord lys). Dit is nie net C # wat gestoor word as C #, maar enige hoofletter gevolg deur #. Aan die ander kant, C ++ (en enige ander laer-gevat brief gevolg deur 'n ++) geïndekseer as c (ongeag of c is in jou geraas woord lys).
Ander wenke
Haal 'n veel-herhaal hulpbladsy oor kruip Service navraag taal:
Om spesiaal behandel karakters soos &, gebruik |, ^, # @, $, (,), in 'n navraag, sluit jou navraag in aanhalingstekens ( ")
.
Sover ek weet, volteksnavraag in MSSQL
is ook gedoen deur die kruip Service, so dit kan help.