Hvorfor ikke SQL fulltekst indeksering retur resultater for ord som inneholder #?

stemmer
19

For eksempel er min spørring som følgende ved hjelp av SQL Server 2005:

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

Jeg har en tekstindeks definert til å bruke kolonnen søkefelt som returnerer resultater ved bruk av:

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

Jeg tror # er en spesiell bokstav, så hvordan kan jeg tillate Fritekst å fungere korrekt for spørringen ovenfor?

Publisert på 04/08/2008 klokken 05:51
kilden bruker
På andre språk...                            


2 svar

stemmer
11

The # røye er indeksert som tegnsetting og derfor ignorert, så det ser ut som vi vil fjerne bokstaven C fra vårt ord indeksering ignorere lister.

Testet det lokalt etter å gjøre det og ombygging indeksene og jeg får resultater!

Ser vi på å bruke et annet ord breaker språk på indeksert kolonne, slik at disse spesialtegn ikke ignoreres.

EDIT: Jeg fant også denne informasjonen :

c # er indeksert som c (hvis c ikke er i støy ordliste, se mer på støy ordlister senere), men C # er indeksert som C # (i SQL 2005 og SQL 2000 kjører på Win2003 uansett om C eller c er i støy ordliste). Det er ikke bare C # som er lagret som C #, men noen stor bokstav etterfulgt av #. Omvendt, c ++ (og alle andre lavere bekledde bokstav etterfulgt av et ++) er indeksert som c (uavhengig av om c er i støy ordliste).

Svarte 04/08/2008 kl. 06:39
kilden bruker

stemmer
1

Siterer en mye replikert hjelpesiden om indekseringstjenesten spørrespråk:

For å bruke spesialbehandlede tegn som &, |, ^, #, @, $, (,), i en spørring, setter søket i anførselstegn ( “).

Så vidt jeg vet, full søketeksten i MSSQLer også gjort av indekseringstjenesten, slik at dette kan hjelpe.

Svarte 04/08/2008 kl. 06:10
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more