통화와 환율 다루기
currency FieldType은 통화 변환이나 환율에 대한 질의를 할 때 Solr/Lucene에 화폐 가치에 대한 지원을 제공합니다. 다음 기능을 지원합니다:
- 지점 조회
- 범위 조회
- 기능성 범위 조회
- 정렬
- 통화 코드 또는 기호로 통화 파싱
- 대칭 환율과 비대칭 환율 (만약 환전 수수료가 있다면 비대칭 환율이 유용합니다.
통화 설정
currency Field는 schema.xml에 정의되어 있습니다. 다음은 해당 Field의 기본 구성입니다:
<fieldtype name="currency" class="solr.CurrencyField" precisionstep="8" defaultcurrency="USD" currencyconfig="currency.xml" />
이 예제에서, 우린 Field 유형의 이름과 class를 정의했고, defualtCurrency(기본 통화 단위)를 "USD", 미국 달러화로 정의했습니다. 또 currencyConfig(통화 설정)는 "currency.xml" 파일을 사용하도록 정의했습니다. 이 파일은 우리가 사용하는 기본 통화와 다른 통화 사이의 환율이 기록되어 있습니다. 다른 구현법으로는 정기적으로 환율 정보를 다운로드 받는 방법이 있습니다. 자세한 정보는 아래 환율을 참고하세요.
색인 할 때, 금액 Field는 현지 통화로 색인될 수 있습니다. 예를 들어서, 만약 전자상거래 사이트의 상품들이 유로화로 표시되어 있다면 "1000,EUR"와 같은 가격 Field는 적절하게 색인할 것입니다. 가격은 통화 단위와 쉼표로 분리되어야 하고, 가격은 반드시 부동소수점(소수점)으로 표현되어야 합니다.
질의를 처리하는 동안, 범위와 지점 조회 모두 지원됩니다.
환율
제공자를 명시해서 환율을 구성할 수 있습니다. 기본적으로 두 가지 제공자가 지원됩니다: FileExchangeRateProvider 혹은 OpenExchangeRatesOrgProvider.
FileExchangeRateProvider
이 제공자는 환율 파일을 필요로 합니다. 기본값이라서, 이 제공자를 이용하려면 단지 currencyConfig의 값으로 파일 경로와 이름만 명시하면 됩니다.
Solr에 포함된 샘플 currency.xml 파일입니다. schema.xml 파일과 같은 경로에서 찾을 수 있습니다. 아래는 파일의 일부입니다:
<rate from="USD" to="ARS" rate="4.333871" comment="ARGENTINA Peso" /> <rate from="USD" to="AUD" rate="1.025768" comment="AUSTRALIA Dollar" /> <rate from="USD" to="EUR" rate="0.743676" comment="European Euro" /> <rate from="USD" to="CAD" rate="1.030815" comment="CANADA Dollar" /> <rate from="EUR" to="GBP" rate="0.869914" /> <rate from="EUR" to="NOK" rate="7.800095" /> <rate from="GBP" to="NOK" rate="8.966508" /> <rate from="EUR" to="USD" rate="0.5" />
OpenExchangeRatesOrgProvider
매 시간 USD와 다른 158개의 통화 사이의 환율을 Solr가 OpenExchangeRates.Org로부터 다운로드 하도록 구성할 수 있습니다. 환율은 대칭 환율만 제공됩니다.
이 경우, Field Type 정의에 providerClass를 명시해야 합니다. 아래는 예제입니다:
<fieldtype name="currency" class="solr.CurrencyField" precisionstep="8" providerclass="solr.OpenExchangeRatesOrgProvider" refreshinterval="60" ratesfilelocation="http://www.openexchangerates.org/api/latest.json?app_id=yourPersonalAppIdKey" />
refreshInterval은 분 단위입니다. 따라서 위 예제는 매 60분마다 새 환율을 다운로드 할 것입니다. 새로고침 간격은 증가될 수 있지만 감소되지는 않습니다.
오탈자와 오역은 댓글을 달아주세요. (Apache Solr 5.5 가이드 번역에 관하여...)