我想知道是否有办法在中间变量中存储Solr
函数表达式,因此每次都不会重新计算它。
以我的具体需求为例。我有必要按距离排序(但每个距离分组在不同的范围集中,就像距离分面frange
的情况一样)。这些范围是用户可定义的,可以是任意长度。
例如,用户定义范围集1,2,3
,发送到Solr
的表达式将为:
max(map(geodist(),0,1,1),max(map(geodist(),1,2,2),map(geodist(),2,3,3))) asc
geodist()
调用可以存储/记忆,还是Solr
内部优化这些表达式?
答案 0 :(得分:1)
我不确定以下情况,但可能值得一试: -
{!func}max(map($v3,0,1,1),$v2)&v2={!func}max($v4,$v5)&v4=map($v3,1,2,2)&v5=map($v3,2,3,3)&v3=geodist()
以上称为参数解除引用。
http://wiki.apache.org/solr/LocalParams
我们将函数geodist()分配给本地参数v3。该参数在另一组参数中被替换: - v4和v5,它们在v2和主函数中被进一步替换。
然而,最近在solr 4.0中引入了上述功能