Neden # içeren kelimeler için tam metin dizin dönüş sonuçları SQL etmiyor?

oy
18

Örneğin, benim sorgu SQL Server 2005 kullanıyorsanız aşağıdaki gibidir:

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

Ben kullanırken sonuçları döndürür sütun SearchField kullanmak tanımlanmış bir tam metin dizini vardır:

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

Ben # özel mektup olduğuna inanıyoruz, peki nasıl FREETEXT yukarıdaki sorgu için düzgün çalışması için izin veriyoruz?

Oluştur 04/08/2008 saat 06:51
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
10

# Char noktalama işareti olarak endeksli ve bu nedenle göz ardı, bu yüzden listeleri görmezden bizim kelime endeksleme mektup C kaldırırız gibi görünüyor edilir.

bunu yaparken ve dizinleri yeniden sonra yerel olarak test edilmiş ve sonuçlar olsun!

Bu özel karakterler göz ardı edilmez, böylece endeksli sütun üzerinde farklı bir sözcük ayırıcı dili kullanarak bakarak.

DÜZENLEME: Ben de buldum bu bilgiyi :

c # c dizine (C senin etkisiz sözcük listede değilse, daha sonra etkisiz sözcük listeleri hakkında daha fazla bakınız), ancak C veya c gürültüde ise C # bakılmaksızın Win2003 üzerinde çalışan SQL 2005 ve SQL 2000 yılında C # (aynı dizine kelime listesi). Bu C # olarak depolanır C #, ancak ardından # herhangi harf ibaret değildir. Tersine, c ++ (ve bir ++ ardından herhangi bir başka alt kasalı mektup) (bakılmaksızın c sizin gürültü kelime listesinde olup olmadığı) c dizine eklenmiştir.

Cevap 04/08/2008 saat 07:39
kaynak kullanıcı

oy
1

Dizin Oluşturma Hizmeti sorgu dili hakkında bir çok-çoğaltılmış yardım sayfasını alıntı:

( “) $, (,), Bir sorguda, tırnak içinde sorgusu içine, ^, #, @, | öyle, & olarak özel olarak ele karakterleri kullanın.

Gibi bildiğim kadarıyla, tam metin arama MSSQLda dizin oluşturma hizmeti tarafından yapılır, bu nedenle bu yardımcı olabilir.

Cevap 04/08/2008 saat 07:10
kaynak kullanıcı

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