2010-03-24 11 views
1

나는 Lucene을 사용하고 있으며 원거리 속성이있는 문서를 색인화하고 검색하는 방법을 찾고있다. 예를 들어lucene 경계를 넘어 간다

내가 가진 :

Document 1: Price:[30 TO 50] 
Document 2: Price:[45 TO 60] 
Document 3: Price:[60 TO 70] 

그리고 은 내가 Price in [55 TO 65] 검색하면 내가 Document 2을 얻을해야한다, 위의 예에서 그 범위를 특정 간격 교차하는 모든 문서를 검색하고 싶습니다 결과로 Document 3.

NumericRangeQueries만으로도 트릭을 수행 할 수 없다고 생각합니다. R- 트리와 비슷한 인덱스로 작업해야하지만, Lucene에서 구현되어 있습니까? 또한, 쿼리 Price in [55 TO 65]에는 두 개의 경계가 있기 때문에 필요한 것은 MultiTermQuery의 하위 클래스 여야한다고 가정하지만 MultiTermQuery의 하위 클래스 중에서는 아무 것도 볼 수 없습니다.

어떤 도움, 감사

실비오을 감사

P.S. Lucene 2.9.0을 사용하고 있습니다. 그러나 필요한 경우 최신 릴리스로 업데이트 할 수 있습니다.

답변

1

간단한 방법 중 하나는 인덱스 시간 동안 범위를 각 범위의 개별 값으로 확장하는 것입니다. 따라서 [30 TO 50]은 30, 31, 32, 33, 34 등으로 인덱싱됩니다. 그런 다음 정상 범위 쿼리를 사용하여 범위를 쿼리합니다. 수많은 이산 값 (수백만)이 없다면 이것은 충분히 잘 수행 될 것입니다.

+0

그런 식으로 필자는 간격을 이산화하기 위해 사용하는 값의 수와 연결될 것이고 내 문서 스키마를 부 풀릴 많은 필드 (각 이산 값마다 하나씩)를 생성 할 것입니다. 물론 해결책 일 수도 있지만 최후의 수단으로 사용하겠습니다. –

+0

별도의 필드를 만들 필요가 없습니다. 모든 값은 동일한 필드에서 처리되며 문서 스키마를 변경하지 않아도됩니다. – bajafresh4life

관련 문제