Solr将表达式存储为变量,以避免重新计算它

时间:2013-01-18 15:44:59

标签: solr

我想知道是否有办法在中间变量中存储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内部优化这些表达式?

1 个答案:

答案 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中引入了上述功能