SQL 전체 텍스트 인덱싱에서 #이 포함된 단어에 대한 결과가 반환되지 않는 이유는 무엇인가요?
예를 들어 SQL Server 2005를 사용하여 다음과 같은 쿼리를 작성했습니다:
SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')
사용할 때 결과를 반환하는 SearchField 열을 사용하도록 정의된 전체 텍스트 인덱스가 있습니다:
SELECT * FROM Table WHERE SearchField LIKE '%c#%'
가 특수 문자인데 위의 쿼리에 대해 FREETEXT가 올바르게 작동하도록 하려면 어떻게 해야 하나요?
22
2
문자는 구두점으로 인덱싱되므로 무시되므로 단어 인덱싱 무시 목록에서 문자 C를 제거하는 것처럼 보입니다.
그렇게 한 후 로컬에서 테스트하고 인덱스를 다시 빌드했더니 결과가 나왔습니다!
이러한 특수 문자가 무시되지 않도록 인덱싱된 열에 다른 단어 구분 언어를 사용하는 것을 고려하고 있습니다.
편집: 이 정보도 찾았습니다:
c#은 c로 색인되지만(c가 노이즈 단어 목록에 없는 경우 나중에 노이즈 단어 목록에 대해 자세히 참조), C#은 C#으로 색인됩니다(Win2003에서 실행되는 SQL 2005 및 SQL 2000에서는 C 또는 c가 노이즈 단어 목록에 있는지 여부와 관계없이). C#만 C#으로 저장되는 것이 아니라 대문자 뒤에 #이 오는 모든 문자가 저장됩니다. 반대로, c++(및 그 뒤에 ++가 오는 다른 소문자)는 c로 색인됩니다(노이즈 단어 목록에 c가 있는지 여부와 관계없이).
인덱싱 서비스 쿼리 언어에 대해 많이 반복되는 도움말 페이지를 인용합니다:
쿼리에서 &, |, ^, #, @, $, (, )와 같이 특수 처리된 문자를 사용하려면 쿼리를 따옴표(")로 묶으세요.
제가 알기로는
MSSQL
의 전체 텍스트 검색도 인덱싱 서비스에서 수행하므로 이 방법이 도움이 될 수 있습니다.