2010-04-28 4 views
7

검색을 위해 인덱싱해야하는 BigDecimal 값이 있습니다. Lucene에는 NumericField가 있지만 long, double, float 및 int에만 setter가 있습니다. String으로 저장할 수는 있지만 NumericRangeQuery의 이점은 없습니다.Lucene에서 BigDecimal 값을 인덱싱하는 방법 3.0.1

BigDecimal을 어떻게 저장 했습니까? 공유 할 수있는 모범 사례? 다른 모든 실패하면

답변

1

스티븐 로우는이 게시물에 흥미로운 아이디어를 제공
http://www.lucidimagination.com/search/document/ad648772f8825a28/bigdecimal_values#2502f96055839c3d

그는 자신의 계획이 아마 BigDecimal의 값을 나타내는 데 사용 될 수 있다고 말한다. 음수 값이 필요하지 않은 경우 구현하기가 더 쉬워 보입니다. mindas가 제안한 것처럼, 이것을 구현하기 위해 AbstractField를 확장 할 수 있습니다.
http://www.lucidimagination.com/search/document/ad648772f8825a28/bigdecimal_values#cef1d0e25af063ef

+5

안녕, 하이퍼 링크가 작동하지 않는 :

또한 그가 클래스 BCDUtils와 그에 대한 SOLR에서 몇 가지 작업을 시작했다고 밝혔다 Yonik 실리있다. –

3

, 고려 (NumericRangeQuery 그것을 확장하는 방법과 유사) (NumericTokenStream 그것을 확장하는 방법과 유사) (NumericField 그것을 확장하는 방법과 유사) AbstractField, TokenStreamMultitermQuery을 확장. 3 개의 Numeric * 클래스는 모두 불행히도 최종적으로 사용할 수 없으므로 최종적으로 확장 할 수 없습니다. (희소식은 BigDecimal에 대한 로직이 매우 간단하고 BigDecimal에 대해이를 다시 추가하는 것이 쉽습니다.)

데이터 저장 문자열 심지어 NumericField 저장합니다 사소한 인의 javadoc에서 :.

가 참고 :. 검색 후 에서 문서 인스턴스를 저장 필드 값을 검색 할 때이 클래스 만 인덱싱 중에 사용됩니다, 당신은 기존의 얻을 것이다 숫자 값이 String으로 반환되는 필드가있는 인스턴스 (사용 된 데이터 유형의 toString (value)에 따라)

경로를 찾으려면 Lucene 개발자에게 패치를 보내거나 적어도 JIRA 요청을 작성하십시오. Lucene 개발자는 일반적으로 친절하고 개방적인 사람들이므로 다른 사람들에게도 도움이 될 수 있습니다.

관련 문제