SOLR搜索按相关性得分筛选

时间:2014-08-28 16:19:48

标签: apache search solr full-text-search search-engine

因此每个SOLR搜索结果都有自己的相关性分数:

https://wiki.apache.org/solr/SolrRelevancyFAQ

  

"如何查看搜索结果的相关性分数

     

请求名为"得分的伪字段"通过添加它返回   到fl(字段列表)参数。 "得分"然后会出现   与返回文档中存储的字段。 Q =正义   联赛&安培; FL = *,得分"

我的问题是......是否可以通过此相关性分数过滤SOLR结果?

EG。执行以下

的性质的查询
Search for keyword "LOL" and only fetch documents whose relevancy score > 50

如果可能,您将如何在语法上指定此查询?

3 个答案:

答案 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参数的引用