2014-10-03 5 views
0

Lucene .Net 버전 3.0.3문자열에서 Lucene Query를 구문 분석하는 방법은 무엇입니까?

다음은 Lucene 쿼리가 필드 키, 값 및 허용 오차가있는 문자열로 변환 된 것입니다.

+(() (((((FirstNames:John~0.8)^0.7)) (((LastNames:Smith~0.8)^0.8))())~2)) +(() (*:*))

나는 내가 다시 루씬 쿼리로 변환하는 데 필요한 API에 문자열 값을 전달하려는.

필드 이름과 성으로 QueryParser 및 MultifieldQueryparser를 시도했지만 통과 한 정확한 쿼리를 반환하지 않았습니다.

답변

0

일반적으로 문자열을 lucene 쿼리로 구문 분석하는 방법은 앞서 언급 한 QueryParsers입니다.

그러나 쿼리의 문자열 표현을 얻는 것이 디버깅 등에 유용합니다. 신뢰할 수있는 직렬화 방법을 제공하지 않습니다. 특정 쿼리 구문 분석기가 구문 분석 할 수있는 문자열을 제공 할 것이라는 보장이 없으며이 쿼리 구문은 생성 된 쿼리와 동일합니다.

쿼리는 [Serializable]이지만 보내기/저장하기 전에 직렬화 할 수 있습니다. 참조 : Object Serialization in .NET.

하나의 경고 : 4.0 버전부터 Lucene은 더 이상 쿼리 직렬화를 지원하지 않습니다. Lucene.Net이 4.0에 이르면 직렬화에 대한 지원이 제거된다고 가정하면 더 높은 수준의 직렬화를 처리 할 수 ​​있습니다.