如何在Solr函数查询中排除等于0的分数并保持实际分数?

时间:2015-04-08 19:28:19

标签: search solr

我的目标是将分数分组以对相似项目进行分组,然后按其他字段排序(以“使用价格”为例)。

我可以使用以下查询完成此操作:

/ select?defType = func& q = rint(product({(v = the search term}),100))& fl = score,price& sort = score%20desc,price

但是,此查询将返回Solr中索引的每个文档。

如何过滤此查询以排除得分为0的项目?

我已经尝试将{!frange l = 1}添加到查询中哪种工作...但它使所有得分等于1.这显然不是很好,因为我需要首先显示最相关的结果。

提前感谢您的帮助。

Alex

1 个答案:

答案 0 :(得分:0)

我花了好几个小时试图过滤掉相关性得分为0的值。我无法找到任何直接的方法来做到这一点。我最终通过将查询函数分配给本地参数的解决方法来完成此操作。我在查询("q=")和过滤查询("fq=")中调用此本地参数。

实施例

我们假设你有一个类似的查询:

q={!func}sum(*your arguments*)

首先,使函数组件成为自己的参数:

q={!func}$localParam
&localParam={!func}sum(*your arguments*)

现在只返回分数在1到10之间的结果,只需在该localParam上添加一个过滤查询:

q={!func}$localParam
&localParam={!func}sum(*your arguments*)
&fq={!frange l=1 u=10 inclusive=true}$localParam