SOLR FL 和 Boost 参数计算
SOLR FL and Boost Params Calculation
我的 boost 参数中有一个非常复杂和长的函数。此函数将始终 return 从 1 到 50 的值。我希望将此函数的结果包含在 fl 参数中。
第一个问题是,我可以在 fl 参数中引用提升的结果,而不必在 fl 参数中再次传递函数吗?
第二个问题:如果我给boost函数赋一个变量,然后在fl参数中引用这个变量,SOLR会计算两次吗? (我的意思是一次用于增强场,一次用于 fl 场)
我的 boost 参数函数如下所示:
boost=sum(div(5,map(abs(sub(x,y)),0,0,VALUE), termfreq(...), dist(2,0,0,x,y),.....)
上面的函数只是一个简短的例子,说明了提升可能是什么样子。另外,这个boost函数是动态生成的。
我正在使用 edismax 和 SOLR v7.6
参数替换发生在 Solr 中任何内部发生之前,因此在这种情况下它会被计算两次。
您可以将 debug=results
附加到您的查询字符串以获取有关您的查询的每个部分对分数的贡献程度的详细信息,并且您应该能够从该调试信息中提取应用的提升量(并避免计算两次)。您可以附加 debug.explain.structured=true
以获得作为正确结构而不是格式化文本(带有换行符等)返回的解释信息
我的 boost 参数中有一个非常复杂和长的函数。此函数将始终 return 从 1 到 50 的值。我希望将此函数的结果包含在 fl 参数中。
第一个问题是,我可以在 fl 参数中引用提升的结果,而不必在 fl 参数中再次传递函数吗?
第二个问题:如果我给boost函数赋一个变量,然后在fl参数中引用这个变量,SOLR会计算两次吗? (我的意思是一次用于增强场,一次用于 fl 场)
我的 boost 参数函数如下所示:
boost=sum(div(5,map(abs(sub(x,y)),0,0,VALUE), termfreq(...), dist(2,0,0,x,y),.....)
上面的函数只是一个简短的例子,说明了提升可能是什么样子。另外,这个boost函数是动态生成的。 我正在使用 edismax 和 SOLR v7.6
参数替换发生在 Solr 中任何内部发生之前,因此在这种情况下它会被计算两次。
您可以将 debug=results
附加到您的查询字符串以获取有关您的查询的每个部分对分数的贡献程度的详细信息,并且您应该能够从该调试信息中提取应用的提升量(并避免计算两次)。您可以附加 debug.explain.structured=true
以获得作为正确结构而不是格式化文本(带有换行符等)返回的解释信息