因此每个SOLR搜索结果都有自己的相关性分数:
https://wiki.apache.org/solr/SolrRelevancyFAQ
"如何查看搜索结果的相关性分数
请求名为"得分的伪字段"通过添加它返回 到fl(字段列表)参数。 "得分"然后会出现 与返回文档中存储的字段。 Q =正义 联赛&安培; FL = *,得分"
我的问题是......是否可以通过此相关性分数过滤SOLR结果?
EG。执行以下
的性质的查询Search for keyword "LOL" and only fetch documents whose relevancy score > 50
如果可能,您将如何在语法上指定此查询?
答案 0 :(得分:2)
我花了几个小时试图过滤出相关性得分为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
答案 1 :(得分:1)
您可以指定要返回的最大结果数。结果将按分数降序显示,因此您可以停止在结果集中的特定点处理。
solr/search/select?q=LOL&&start=0&rows=10&fl=*%2Cscore
有关设置最低分数的讨论,请参阅以下文章:Is it possible to set a Solr Score threshold 'reasonably', independent of results returned? (i.e. Is Solr Scoring standardized in any way)
答案 2 :(得分:0)
solr 6.6:
添加一个solr过滤器查询(fq
):
q=SEARCH_PHRASE
&fq={!frange l=50.0}query($q,0)
在这种情况下,solr将返回结果“分数”> = 50.0
$q
中的query($q,0)
-就像对q
参数的引用