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?

Was dit nuttig?

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.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top