2009-03-24 3 views
2

SQL Server 2005에서 FT 검색을 설정했지만 "Lia 's"가 포함 된 레코드에 "Lias"키워드를 일치시키는 방법을 찾을 수 없습니다. 기본적으로 사람들이 아포스트로피없이 검색 할 수 있도록하는 것이 좋습니다.아포스트로피 및 SQL Server FT 검색

저는 지금이 문제에 대해 많은 시간을 보냈습니다. 그래서 어떤 도움이 실제로 축복이 될 것입니다.

답변

1

EDIT 2 : 실제로이 문제가 실제로 해결되지 않는다는 것을 알고 있습니다. 무시하고 다른 답변을 참조하십시오! 아래 코드는 사용자가 아포스트로피 (예 : "버려진화물")를 삽입 한 경우의 결과를 반환합니다.

내가 FT 로컬 설치하지 않은이 테스트하지 않았습니다 - 원래 발생 및 제거 아포스트로피 하나, 즉 두 테스트를 함유 당신이 구문을 사용할 수 있습니다

SELECT * 
FROM table 
WHERE CONTAINS ('value' OR Replace('value', '''','')) 

편집 : 큰 따옴표를 사용하여 구를 검색 할 수 있습니다.

SELECT * 
FROM table 
WHERE CONTAINS ("this phrase" OR Replace("this phrase", '''','')) 

MSDN documentation for CONTAINS을 참조하십시오. 이것은 실제로 구두점이 무시된다는 것을 나타내지 만 다시 테스트하지는 않았습니다. 그것만으로 CONTAINS('value')을 시도해 볼 가치가 있습니다.

+1

음 ..이 기능은 작동하지만 구문 검색은 어떨까요? 정확한 검색어 검색에 더 적합합니다. – vintana

+0

문구 정보를 추가하고 문서에 링크하도록 편집되었습니다. –

0

은 내가하지만, VARCHAR 컬럼에 질의를하고, 그러한 오라일리 같은 성씨 찾고에서 FT를 사용하지 않은, 내가 사용했습니다 :

아포스트로피가 하나 될 수 있도록이 허용
surname like Replace(@search, '''', '') + '%' or 
Replace(surname,'''','') like @search + '%' 

데이터베이스 값 또는 검색 용어 그것은 또한 큰 테이블을 가진 개처럼 분명히 수행 할 것입니다.

대안 (아마도 좋은 것은 아닙니다)은 데이터의 두 번째 복사본을 저장하고 비 알파 문자를 제거하고 해당 복사본에 대해 검색 (?)을 수행하는 것입니다. 그래서 원본에는 리아 (Liia)와 제 2 사본 리아스 (Lias)가 들어있을 것입니다. 오코너 또는 OConnor 검색 할 때

SELECT surname 
FROM table 
WHERE surname LIKE '%value%' 
OR REPLACE(surname,'''','') LIKE '%value%' 

이 (FT 활성화없이) 나를 위해 작동, 즉 내가 같은 결과를 얻을 : 등

+0

어포 스트로피가없는 텍스트 열을 다른 것으로 복사하는 것은 내가 염두에두고있는 마지막 수단입니다. 그래도 옳은 것 같지 않습니다. Lucene.NET 또는 다른 방법으로이 문제를 해결할 수 있습니까? – vintana

0

또 다른 시도 스토리지의 양을 두 배로.