W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
該 currency 的 FieldType 為 Solr / Lucene(查詢時間貨幣兌換和匯率) 提供貨幣值支持,它支持以下功能:
注意:CurrencyField 已被棄用,以支持 CurrencyFieldType;下面的所有配置示例使用 CurrencyFieldType。
貨幣字段類型在 schema.xml 中定義。以下是這種類型的默認(rèn)配置。
<fieldType name="currency" class="solr.CurrencyFieldType"
amountLongSuffix="_l_ns" codeStrSuffix="_s_ns"
defaultCurrency="USD" currencyConfig="currency.xml" />
在這個例子中,我們定義了字段類型的名稱和類別,并將 defaultCurrency 定義為“USD”,即美元。我們還定義了 currencyConfig 來使用一個名為 “currency.xml” 的文件。這是我們的默認(rèn)貨幣與其他貨幣之間的匯率文件。有一個備用的實施,可以允許定期下載貨幣數(shù)據(jù)。請參閱下面的匯率了解更多。
Solr 附帶的許多示例架構(gòu)都包含一個使用此類型的動態(tài)字段,如下例所示:
<dynamicField name="*_c" type="currency" indexed="true" stored="true"/>
這個動態(tài)字段將匹配任何以 _c 結(jié)束的字段,并使其成為貨幣類型的字段。
在索引時,貨幣字段可以索引在本國貨幣。例如,如果電子商務(wù)網(wǎng)站上的產(chǎn)品以歐元列出,則將價格字段標(biāo)記為“1000,EUR”將適當(dāng)?shù)貙ζ溥M行索引。價格應(yīng)該用逗號與貨幣分開,價格必須用浮點值(小數(shù)點)進行編碼。
在查詢處理期間,范圍和 Point 查詢均受支持。
您必須指定指定 amountLongSuffix 和 codeStrSuffix 的參數(shù),對應(yīng)于用于原始金額和貨幣動態(tài)子字段的動態(tài)字段,例如:
<fieldType name="currency" class="solr.CurrencyFieldType"
amountLongSuffix="_l_ns" codeStrSuffix="_s_ns"
defaultCurrency="USD" currencyConfig="currency.xml" />
在上面的例子中,原始金額字段將使用 "*_l_ns" 動態(tài)字段,該字段必須存在于架構(gòu)中,并使用長字段類型,即擴展 LongValueFieldType。貨幣代碼字段將使用 "*_s_ns" 動態(tài)字段,該字段必須存在于架構(gòu)中,并使用字符串字段類型,即一個是或正在擴展的 StrField。
Tip:如果存儲動態(tài)子字段,則原子更新將不起作用:正如在更新文檔部分時提到的,在您使用原子更新時,存儲的動態(tài)子將導(dǎo)致索引失敗。要避免此問題,請在這些動態(tài)字段上指定 stored="false"。
您可以通過指定提供者來配置匯率。本地支持兩種提供程序類型:FileExchangeRateProvider 或 OpenExchangeRatesOrgProvider。
該提供程序要求您提供匯率文件。這是默認(rèn)的,這意味著要使用這個提供程序,只需將指定此類型的定義中的 currencyConfig 的文件路徑和名稱作為值。
currency.xmlSolr 中包含一個示例文件,在與 schema.xml 文件相同的目錄中找到。下面是這個文件的一個小片段:
<currencyConfig version="1.0">
<rates>
<!-- Updated from http://www.exchangerate.com/ at 2011-09-27 -->
<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" />
<!-- Cross-rates for some common currencies -->
<rate from="EUR" to="GBP" rate="0.869914" />
<rate from="EUR" to="NOK" rate="7.800095" />
<rate from="GBP" to="NOK" rate="8.966508" />
<!-- Asymmetrical rates -->
<rate from="EUR" to="USD" rate="0.5" />
</rates>
</currencyConfig>
您可以將 Solr 配置為從 OpenExchangeRates.Org 下載匯率,更新率為每小時 170 美元。這些比率只是對稱的。
在這種情況下,需要在字段類型的定義中指定 providerClass,并注冊一個 API 密鑰。下面是一個示例:
<fieldType name="currency" class="solr.CurrencyFieldType"
amountLongSuffix="_l_ns" codeStrSuffix="_s_ns"
providerClass="solr.OpenExchangeRatesOrgProvider"
refreshInterval="60"
ratesFileLocation="http://www.openexchangerates.org/api/latest.json?app_id=yourPersonalAppIdKey"/>
refreshInterval 是分鐘,所以上面的例子將每 60 分鐘下載一次最新的費率。刷新間隔可能增加,但不會減少。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: