weia_q 2017-10-23 03:35 采纳率: 0%
浏览 930

solr 查询 qf权重问题,加权后结果变少


explicit
10
text
edismax

recip(div(abs(ms(NOW/DAY,pubTime)),86400000),1,100,100)


text


title^1.5


如果我加上 qf ,查询出来的结果就会变少,这是什么原因,还是说是正常现象

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 01:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    Solr的query分页功能可能会影响结果的数量。在你的例子中,你正在使用recip(div(...))作为weight函数,这将计算每个文档的分数(即文本的重要性),然后将其除以总分数来得到一个从0到1之间的值。这个分数越高,表示文档越重要。

    如果你只对doc数量感兴趣,并且没有考虑其他因素,那么qf参数不会影响结果的数量。然而,如果某些文档非常关键但并不频繁出现,那么它们可能会被赋予较高的权重,从而导致整个索引中的文档数量减少。

    为了验证这一点,你可以尝试以下步骤:

    1. 生成一些文档,例如:
    {
        "pubTime": "2023-01-01T00:00:00Z",
        "title": "测试文档"
    }
    
    1. 对这些文档进行排序并获取前10条:
    SELECT * FROM doc ORDER BY weight DESC LIMIT 10;
    

    这应该会显示10个文档,其中大部分是较新和较频繁出现的文档。 3. 将qf设置为1

    SELECT * FROM doc WHERE pubTime > NOW() - INTERVAL 1 DAY ORDER BY weight DESC LIMIT 10;
    

    现在你应该可以看到只有少数几个文档仍然出现在结果中,而大多数文档已经被移除了。

    请注意,这只是简单的示例。实际情况下,Solr查询可能涉及更复杂的条件和逻辑,包括但不限于多因子权重、正则表达式匹配等。

    评论

报告相同问题?