1

我想知道是否有办法将Solr函数表达式存储在中间变量中,这样它就不会每次都重新计算。

以我的具体需求为例。我有必要按距离排序(但每个距离都分组在不同的范围集中,就像距离分面的情况一样frange)。这些范围是用户可定义的,可以是任何长度。

例如,用户定义范围 set 1,2,3,发送到的表达式Solr将是:

max(map(geodist(),0,1,1),max(map(geodist(),1,2,2),map(geodist(),2,3,3))) asc

可以存储/记忆该geodist()调用,还是在Solr内部优化此类表达式?

4

1 回答 1

2

我不确定以下内容,但可能值得一试:-

{!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 和 main 函数中被进一步替换。

但是,上述功能是最近在 solr 4.0 中引入的

于 2013-01-22T21:13:17.033 回答