Solr查询 - 带升压的浮动范围

时间:2016-11-09 10:26:25

标签: solr lucene

实施以下内容的正确方法是什么:

任务:查询电压(浮点数)等于 100.0 且容差 -0%/ + 20%的文档。

  

q = + voltage_f [100.0 TO 120.0]

我希望文件的电压接近下限(100.0)得到更多点作为电压接近上限(120.0)的文件。

反之亦然 - 容忍 -20%/ + 0%

  

q = + voltage_f [80.0 TO 100.0]

我希望电压接近上限(100.0)的文档获得更多点作为电压接近下限(80.0)的文档。

1 个答案:

答案 0 :(得分:0)

您可以use the recip function获取一个从1开始的值,然后随着值的增加逐渐减少:

  

执行recip(x,m,a,b)实现a/(m*x+b)的倒数函数,其中m,a,b是常数,x是任意复杂的函数。

     

当a和b相等且x> = 0时,此函数的最大值为1,随着x的增加而下降。将a和b的值一起增加会导致整个函数移动到曲线的较平坦部分。当x为rord(datefield)时,这些属性可以使其成为提升最近文档的理想函数。

对于您的第一个案例,可以直接使用recip来实施,并调整ab值以满足您的需求。

对于第二种情况,您可以将abs(sub(100, x))用作x,因为当值远离100时会变大。

可以在recip(针对dismax,edismax)或bf(edismax)中添加boost来电。

您的前端必须决定用于abm的正确值 - 您可以使用debugQuery=true查看助推器的贡献和调整幅度相应