Dlaczego nie SQL pełne wyniki Tekst powrotne indeksowania dla słów zawierających #?

głosy
18

Na przykład, moje zapytanie jest jak poniżej przy użyciu programu SQL Server 2005:

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

Mam pełną indeks tekstowy zdefiniowany używać SearchField kolumna, która zwraca wyniki przy użyciu:

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

Wierzę # jest specjalny list, tak jak mogę pozwolić FREETEXT działać poprawnie dla zapytania powyżej?

Utwórz 04/08/2008 o 06:51
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
10

Przyciski # char jest indeksowana jak znaki interpunkcyjne, a zatem ignorowane, więc wygląda na to usuniemy litery C z naszego słowo indeksowania zignorować list.

Testowałem go lokalnie po zrobieniu tego i odbudowywania indeksów i uzyskać wyniki!

Patrząc na użyciu innego języka dzielącego na kolumny indeksowanej, tak, że te znaki specjalne nie są ignorowane.

EDIT: Znalazłem również te informacje :

C # jest indeksowana jako c (jeśli c nie jest na liście słowo hałasu, zobacz więcej na listach słów hałasu później), ale C # jest indeksowana jak C # (w SQL 2005 i SQL 2000 działa na Win2003 niezależnie czy C lub C jest w swojej hałasu Lista słów). Jest to nie tylko C #, który jest przechowywany w C #, ale każda litera a następnie #. Odwrotnie, C ++ (i każdy inny niższy obudowane list następuje ++) jest indeksowana jako C (niezależnie od tego, czy c jest na liście słowo szumu).

Odpowiedział 04/08/2008 o 07:39
źródło użytkownik

głosy
1

Cytując dużo-replikowane stronę pomocy języka zapytań o indeksowania Usługa:

Aby użyć specjalnej obróbce znaków takich jak &, |, ^, #, @, $, (,), w kwerendzie, należy ująć zapytanie w cudzysłowie ( „).

O ile mi wiadomo, wyszukiwanie pełnotekstowe w MSSQLrównież odbywa się przez usługę indeksowania, więc to może pomóc.

Odpowiedział 04/08/2008 o 07:10
źródło użytkownik

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