【问题标题】:is there a way to tell if a result has been boosted in SOLR?有没有办法判断 SOLR 中的结果是否得到提升?
【发布时间】:2015-05-06 08:13:40
【问题描述】:

我有一个搜索系统,允许用户设置他们的偏好,然后根据这些偏好在 SOLR 搜索中提升结果。我想在提升某个结果时给用户一些视觉反馈,但要做到这一点,我需要找到一种方法来告诉某个特定结果是否得到提升。

到目前为止,我已经考虑过使用分数值,如果分数高于某个阈值,那么我知道它已经被提升了,但是分数似乎从查询到查询变化很大,所以我不知道如何设置这样的阈值。

如果我可以在结果中以某种方式访问​​预提升分数,那么我可以将其与最终提升后分数进行比较,并知道结果已被提升,但我不认为提升前分数是可用(如果我错了,请纠正我)。

有没有人有任何其他想法如何实现这一目标?

【问题讨论】:

    标签: search solr solr-boost


    【解决方案1】:

    您将此添加到您的请求中:

    &debugQuery=true
    

    然后你会在你的回复中得到一个debug 元素。除其他外,在包含explain 中,您可以看到(对于返回的每个文档 ID)它的分数是如何构建的。如果您解析该信息,您可以查看它是否来自,包括提升信息)。

    explain 信息解析起来非常复杂,甚至还有 a page 可以帮助您。

    【讨论】:

    • 我尝试了添加 debugQuery,但是除了大大减慢查询响应速度之外,它真的很难解析 - 解释页面无法处理我的响应。
    • 是的,它更慢且难以解析(但可行),我认为没有其他方法。您也可以在不提升首选项和比较分数的情况下运行查询,但这意味着运行两个查询。
    • 我想我可以在前端放置一些逻辑,在那里我可以根据首选项标准检查每个结果字段,并决定它是否已被提升。另一种方法可能是实际扩展处理结果的 Java 类并添加字段“orig_score”或类似的东西。似乎这可能是一个不错的起点:lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/search/…
    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多