키워드 분석기 기반 Lucene.NET 인덱스를 SQL Server 2008 R2 기반 쿼리로 대체하려고합니다.SQL 전체 텍스트 인덱서, 정확한 일치 및 이스케이프
내가 쿼리해야하는 사용자 지정 인덱싱 된 필드가 포함 된 테이블이 있습니다. 인덱스 열의 값 (아래 참조)은 일련의 .NET 형식에서 가져온 사용자 지정 인덱스 필드의 이름/값 쌍의 조합입니다. 구조가 알려지지 않았기 때문에 실제 값은 런타임에 특성에서 가져옵니다.
AND 및 OR을 사용하여 이름 및 값 쌍을 검색하고 쿼리가 일치하는 행을 반환 할 수 있어야합니다. 이 같은
Id Index
====================================================================
1 [Descriptor.Type]=[5][Descriptor.Url]=[/]
2 [Descriptor.Type]=[23][Descriptor.Url]=[/test]
3 [Descriptor.Type]=[25][Descriptor.Alternative]=[hello]
4 [Descriptor.Type]=[26][Descriptor.Alternative]=[hello][Descriptor.FriendlyName]=[this is a test]
간단한 쿼리보기 :
select * from Indices where contains ([Index], '[Descriptor.Url]=[/]');
다음과 같은 오류가 발생합니다 즉, 쿼리, 나는 Index
의 데이터를 염두에 너무
Msg 7630, Level 15, State 2, Line 1
Syntax error near '[' in the full-text search condition '[Descriptor.Url]=[/]'.
변경 열 [
및 ]
대신 |
을 사용하려면 :
이제는 해당 쿼리가 유효하지만 실행하면 정확하게 일치하는 레코드 (이 경우 정확히 하나) 대신 및 /
으로 시작하는 모든 행이 반환됩니다.
내 질문은 어떻게 쿼리가 [
및 ]
을 설명하고 바로 정확한 일치하는 행이 반환을 보장하기 위하여 탈출 할 수있다?
A는 더 복잡한 쿼리는 작은 다음과 같습니다
select * from Indices where contains ([Index], '[Descriptor.Type]=[12] AND ([Descriptor.Url]=[/] OR [Descriptor.Url]=[/test])');
감사합니다,
Kieron 사용
나는 그것을 시도했지만 가장 큰 걱정은 잘못된 결과가 반환된다는 것입니다. 감사. – Kieron
'[* 색인], [[] Descriptor.Url] = [[] /] ')을 포함하는 색인에서'select *'오류는 무엇입니까? 파이프를 사용하여 수정하기 전에 쿼리가 데이터에서 올바르게 실행되어야합니다. 일단 데이터를 파이프로 변경하면 이제 |를 벗어나야합니다. 쿼리는 다음과 같이 보일 것입니다 :'select * from Indices where ([Index], 'Descriptor.Url \ | = \ |/\ | ESCAPE'\ ');'- db를 가지고 있습니다. – Prescott
문제는 너무 많이 벗어나지 않습니다. 필요하다면 구분 기호를 변경할 수 있습니다. 주요 문제는 반환 된 결과가 예상대로되지 않습니다. – Kieron