Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在solr-if表达式中使用数学_Java_Solr_Lucene - Fatal编程技术网

Java 在solr-if表达式中使用数学

Java 在solr-if表达式中使用数学,java,solr,lucene,Java,Solr,Lucene,我试图在solr的if语句中使用数学。我想实现的是,我有一个梯形函数定义为: x轴上有4个点,左_最小值、左_最佳值、右_最佳值、右_最大值。 对于字段的每个值,我希望得到以下结果: value v score s maxscore if (v<left_minimum) s = 0; if (v>right_maximum) s = 0; if (v>=left_optimum AND v<=right_optimum) s = maxScore; if (v

我试图在solr的if语句中使用数学。我想实现的是,我有一个梯形函数定义为: x轴上有4个点,左_最小值、左_最佳值、右_最佳值、右_最大值。 对于字段的每个值,我希望得到以下结果:

value v 
score s 
maxscore
if (v<left_minimum)
 s = 0;
if (v>right_maximum)
 s = 0;
if (v>=left_optimum AND v<=right_optimum)
 s = maxScore;
if (v>=left_minimum AND v<left_optimum)
 s = maxScore * (v - left_minimum) / (left_optimum - left_minimum)
if (v>right_optimum AND v<=right_maximum )
 s = maxScore * (v - right_optimum) / (right_maximum - right_optimum)
值v
得分s
maxscore
如果(最大重量)
s=0;
如果(v>=左_最优,v=左_最小,v右_最优,v 150,乘积(1.0,div(sub(高度,160),10)),0)
&高度WR=if(高度<180且高度>170,产品(1.0,分区(高度,170),10)),0)
&heightW=总和(heightWL、heightWM、heightWR)
问题是索尔不喜欢用数学表达式表示if。或者至少我还没找到方法。
还有其他可能实现这一点吗?

好的,我确实找到了一个解决方案,或者更好的办法

heightWL=if(map(height,160,169,1,0),div(sub(height,160),10),0)
所以我基本上把x和y之间的所有值,a>x和a
heightWL=if(map(height,160,169,1,0),div(sub(height,160),10),0)