1

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そのような式を内部的に最適化しますか?

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 とメイン関数でさらに置き換えられます。

ただし、上記の機能はsolr 4.0で最近導入されました

于 2013-01-22T21:13:17.033 に答える