实施以下内容的正确方法是什么:
任务:查询电压(浮点数)等于 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)的文档。
答案 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
来实施,并调整a
和b
值以满足您的需求。
对于第二种情况,您可以将abs(sub(100, x))
用作x
,因为当值远离100时会变大。
可以在recip
(针对dismax,edismax)或bf
(edismax)中添加boost
来电。
您的前端必须决定用于a
,b
或m
的正确值 - 您可以使用debugQuery=true
查看助推器的贡献和调整幅度相应