按相关性得分的SOLR搜索过滤器

问题描述 投票:3回答:3

因此,每个SOLR搜索结果都有各自的相关性得分:

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

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

通过添加它来返回名为“ score”的伪字段到fl(字段列表)参数。然后,“分数”将出现与存储在返回文档中的字段。 q =正义联赛&fl = *,得分“

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

例如执行以下性质的查询]

Search for keyword "LOL" and only fetch documents whose relevancy score > 50

[如果可能,您将如何通过语法指定此查询?

apache search solr full-text-search search-engine
3个回答
2
投票

您可以指定要返回的最大结果数。结果将按分数降序显示,因此您可以在结果集中的特定点停止处理。

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)


3
投票

我花了数小时试图过滤相关性得分为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

0
投票

solr 6.6:

添加一个solr查询过滤器:

q=SEARCH_PHRASE
&fq={!frange l=3}query($q,0)
© www.soinside.com 2019 - 2024. All rights reserved.