SQL 전체 텍스트 인덱싱이 #이 포함된 단어에 대한 결과를 반환하지 않는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1042

문제

예를 들어 내 쿼리는 SQL Server 2005를 사용하여 다음과 같습니다.

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

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

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

#은 특수 문자라고 생각합니다. 그렇다면 FREETEXT가 위 쿼리에 대해 올바르게 작동하도록 하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

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

그 작업을 수행하고 인덱스를 다시 빌드한 후 로컬에서 테스트했으며 결과를 얻었습니다!

해당 특수 문자가 무시되지 않도록 인덱싱된 열에 다른 단어 분리기 언어를 사용하는 방법을 살펴보겠습니다.

편집하다:나도 찾았어 이 정보:

c#은 c로 인덱싱되지만(c가 의미 없는 단어 목록에 없으면 나중에 의미 없는 단어 목록에 대한 자세한 내용을 참조하세요.) C#은 C#으로 인덱싱됩니다(Win2003에서 실행되는 SQL 2005 및 SQL 2000에서는 C 또는 c가 의미 없는 단어에 있는지 여부에 관계 없음). 단어 목록).C#으로 저장되는 것은 C#뿐만 아니라 # 뒤에 오는 대문자도 마찬가지입니다.반대로, c++(그리고 ++가 뒤에 오는 다른 모든 소문자)는 c로 색인화됩니다(c가 의미 없는 단어 목록에 있는지 여부에 관계없이).

다른 팁

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

쿼리에서 &, |, ^, #, @, $, (, )와 같이 특별히 처리되는 문자를 사용하려면 쿼리를 따옴표(")로 묶습니다.

내가 아는 한, 전체 텍스트 검색은 MSSQL 이는 인덱싱 서비스에서도 수행되므로 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top