2012-06-26 6 views
0

프로그래밍 방식으로 사용자의 검색 표현식을 확장 할 수 있어야합니다. X w/5 (Y || Z) ~ "X Y"~ 5 || "X Z"~ 5
이런 종류의 작업을 수행 할 수있는 기존 라이브러리가 있습니까? 그렇지 않은 경우 어떤 접근 방식을 권장합니까? 이 솔루션은 .NET 환경 내에 존재합니다.프로그래밍 방식으로 X w/5 (Y || Z)를 "X Y"~ 5 || "X Z"~ 5

+2

이유를 설명 할 수 있습니까? 아마도 최종 목표를 달성 할 수있는 대안이있을 수 있습니다. – GregRos

+0

근본적인 목적을보다 잘 반영하기 위해 게시물을 수정했습니다. 근접 쿼리를 Lucene에 전달합니다. – balazs

답변

1

당신은 conjuctive normal form http://en.wikipedia.org/wiki/Conjunctive_normal_form과 분리형 보통 formhttp : //en.wikipedia.org/wiki/Disjunctive_normal_form을 살펴보고 싶을 것입니다.

구현할 수있는 알고리즘과 Java 구현에 대한 링크가 있습니다.

1

당신이 필요로하는 것은 조작 할 수있는 추상 구문 트리를 생성하는 파서입니다. 보세요 here.

+0

파서 자체는 표현식을 다시 작성하지 않습니다. 그가 필요로하는 것은 파서와 커스텀 익스프레션 재 작성 루틴입니다. –