【问题标题】:SOLR search filter by relevancy scoreSOLR 搜索过滤器的相关性分数
【发布时间】:2014-10-22 14:15:39
【问题描述】:

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

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

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

请求通过添加返回名为“score”的伪字段 到 fl(字段列表)参数。 “分数”将随之出现 与返回文档中的存储字段。 q=正义 联赛&fl=*,score"

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案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】:

        solr 6.6:

        添加 solr 过滤器查询 (fq):

        q=SEARCH_PHRASE
        &fq={!frange l=50.0}query($q,0)
        

        在这种情况下,solr 将返回 "score" >= 50.0 的结果

        query($q,0) 中的$q - 就像对 q 参数的引用

        【讨论】:

        • 正如你所说的 """ $q in query($q,0) - 这就像对 aq 参数 """ 的引用,这是否意味着查询函数再次执行 SEARCH_PHRASE 或者它只是获取结果主要查询。这种方法会增加 solr 的负载吗??
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-22
        • 2015-09-20
        • 1970-01-01
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多