我希望将来自某些国家a地区(比如阿联酋和埃及)的所有文档提升500倍。请注意,此系数必须相乘,而不是相加,因此我不能使用bq。
我目前的解决方案是使用:
&boost=map(sum(termfreq(countryname,UAE),termfreq(countryname,Egypt)),0,0.1,1,500)
如果文档来自UAE或Egypt,则termfreq返回大于0的值,sum返回大于0的值,map返回boost值500。
然而,有了这个,我在提升名称中有空格的国家时遇到了麻烦。例如,沙特阿拉伯。
&boost=map(sum(termfreq(countryname,Saudi Arabia)),0,0.1,1,500)
&boost=map(sum(termfreq(countryname,Saudi+Arabia)),0,0.1,1,500)
&boost=map(sum(termfreq(countryname,Saudi%20Arabia)),0,0.1,1,500)
以上都给出了错误。
我也试过
&boost=map(sum(termfreq(countryname,Arabia)),0,0.1,1,500)
但这并没有增加沙特阿拉伯提交的文件。
请在这里提出解决方案。任何帮助将不胜感激。
1条答案
按热度按时间xiozqbni1#
Tldr;
我听起来像你需要的function score query?
function_score可让您修改查询所撷取之文件的分数。例如,如果分数函数的计算成本很高,但足以计算一组已筛选文件的分数,则此功能会很有用。
溶液
以下请求应能帮助您响应您的需求。