2008-08-04 2 views
16

예를 들어, 내 쿼리는 SQL Server 2005를 사용하여 다음과 같습니다.SQL Full Text Indexing이 #가 포함 된 단어에 대한 결과를 반환하지 않는 이유는 무엇입니까?

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

전체 텍스트 인덱스를 사용할 때 결과를 반환하는 열 SearchField를 사용하도록 정의했습니다.

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

# 는 특수 문자이므로 FREETEXT가 위 쿼리에 대해 올바르게 작동하도록하려면 어떻게해야합니까?

+0

"c \\ #"는 어떨까요? –

답변

10

# char은 구두점으로 색인되어 있으므로 무시됩니다. 따라서 단어 색인 무시 목록에서 문자 C가 제거됩니다.

인덱스를 다시 작성하고 결과를 얻은 후 로컬에서 테스트했습니다. 결과가 나타납니다!

다른 특수 문자가 무시되지 않도록 색인 된 열에서 다른 단어 분리기 언어를 사용합니다.

편집 :에서 ((C 나중에 의미없는 단어 목록에 대한 자세한 참조하십시오 의미없는 단어 목록에없는 경우)하지만, C 번호는 C 번호로 인덱스되어

의 C#은 C로 색인 : 나는 또한 this information 발견 C 또는 C가 노이즈 단어 목록에 포함되어 있는지 여부와 관계없이 Win2003에서 실행되는 SQL 2005 및 SQL 2000). C#으로 저장되는 것은 물론 #이 뒤에 오는 대문자입니다. 반대로, C++ (및 기타 소문자로 된 문자 뒤에 ++가 오는)는 c로 색인화됩니다 (c가 사용자의 단어 목록에 있는지 여부는 관계 없음).

1

인덱싱 서비스 쿼리 언어에 대해 많이 복제 된 도움말 페이지를 인용 :

는 &으로 특수 처리 문자를 사용하려면, |, ^, #, @, $, (,), 쿼리에서, 쿼리를 따옴표 (")로 묶으십시오.

지금까지 내가 아는 한, MSSQL 전체 텍스트 검색도 인덱싱 서비스에 의해 이루어집니다

, 그래서 이것은 도움이 될 수 있습니다.

관련 문제