9.3. 使用缓存进行丰富¶
您可以将文字缓存或外部缓存配置为查找表,以根据数据中的ID填充属性。这对于使用来自外部来源的静态信息丰富记录非常有用。在下面的示例中,我们使用 cacheLookup
函数来解析人名。 number
在每一条记录中。每个缓存都可以配置为根据 expiration
参数,以毫秒为单位。
配置:
{
type = "xml"
id-field = "uuid()"
feature-path = "Feature" // optional path to feature elements
options = {
line-mode = "multi" // or "single"
}
caches = {
names = {
type = "simple"
data = {
123 = {
name = "Jane"
email = "bar@baz.com"
}
148 = {
name = "Mary"
email = "foo@bar.com"
}
}
}
}
fields = [
{ name = "number", path = "number", transform = "$0::integer" }
{ name = "color", path = "color", transform = "trim($0)" }
{ name = "weight", path = "physical/@weight", transform = "$0::double" }
{ name = "source", path = "/doc/DataSource/name/text()" }
{ name = "lat", path = "geom/lat", transform = "$0::double" }
{ name = "lon", path = "geom/lon", transform = "$0::double" }
{ name = "name", transform = "cacheLookup('names', $number, 'name')" }
{ name = "geom", transform = "point($lon, $lat)" }
]
}
数据:
<?xml version="1.0"?>
<doc>
<DataSource>
<name>myxml</name>
</DataSource>
<Feature>
<number>123</number>
<geom>
<lat>12.23</lat>
<lon>44.3</lon>
</geom>
<color>red</color>
<physical height="5'11" weight="127.5"/>
</Feature>
<Feature>
<number>456</number>
<geom>
<lat>20.3</lat>
<lon>33.2</lon>
</geom>
<color>blue</color>
<physical height="h2" weight="150"/>
</Feature>
</doc>
要配置Redis缓存,请指定 caches
部分内容如下:
配置:
{
caches = {
redis = {
type = "redis"
redis-url = "url_of_redis"
expiration = 30000 // milliseconds
}
}
}