SQL 전체 텍스트 인덱싱에서 #이 포함된 단어에 대한 결과가 반환되지 않는 이유는 무엇인가요?

예를 들어 SQL Server 2005를 사용하여 다음과 같은 쿼리를 작성했습니다:

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

사용할 때 결과를 반환하는 SearchField 열을 사용하도록 정의된 전체 텍스트 인덱스가 있습니다:

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

가 특수 문자인데 위의 쿼리에 대해 FREETEXT가 올바르게 작동하도록 하려면 어떻게 해야 하나요?

질문에 대한 의견 (1)
해결책

문자는 구두점으로 인덱싱되므로 무시되므로 단어 인덱싱 무시 목록에서 문자 C를 제거하는 것처럼 보입니다.

그렇게 한 후 로컬에서 테스트하고 인덱스를 다시 빌드했더니 결과가 나왔습니다!

이러한 특수 문자가 무시되지 않도록 인덱싱된 열에 다른 단어 구분 언어를 사용하는 것을 고려하고 있습니다.

편집: 이 정보도 찾았습니다:

c#은 c로 색인되지만(c가 노이즈 단어 목록에 없는 경우 나중에 노이즈 단어 목록에 대해 자세히 참조), C#은 C#으로 색인됩니다(Win2003에서 실행되는 SQL 2005 및 SQL 2000에서는 C 또는 c가 노이즈 단어 목록에 있는지 여부와 관계없이). C#만 C#으로 저장되는 것이 아니라 대문자 뒤에 #이 오는 모든 문자가 저장됩니다. 반대로, c++(및 그 뒤에 ++가 오는 다른 소문자)는 c로 색인됩니다(노이즈 단어 목록에 c가 있는지 여부와 관계없이).

해설 (0)

인덱싱 서비스 쿼리 언어에 대해 많이 반복되는 도움말 페이지를 인용합니다:

쿼리에서 &, |, ^, #, @, $, (, )와 같이 특수 처리된 문자를 사용하려면 쿼리를 따옴표(")로 묶으세요.

제가 알기로는 MSSQL의 전체 텍스트 검색도 인덱싱 서비스에서 수행하므로 이 방법이 도움이 될 수 있습니다.

해설 (0)