【问题标题】:qf in solr is not giving a specefied field any boostsolr 中的 qf 没有给指定的字段提供任何提升
【发布时间】:2016-08-06 14:26:15
【问题描述】:

作为一个简化的例子。 我有两个字段:titlekeywords。 我正在使用带有以下参数的 edismax

qf: 标题+关键词^2

以前,它运行良好。我在 solr 中索引了大约 1500 万条记录。所有记录都有非空的title。大多数记录HAD非空keywords

但最近,我们决定删除大部分记录的 keywords。因此,我们目前只有 1 条记录(在 15M 条记录中)具有非空 keywords

不幸的是,因此,qf 中指定的keywords^2 提升似乎不再起作用。

为此,我们有title,比如“good store”和keywords,比如“裤子服装”。现在,如果我搜索“good storepants”,无论我使用qf: title 还是qf: title keywords^2.5,solr 匹配分数都是完全相同的。 (同样,我认为在大多数记录具有非空关键字之前它有效,因为上述比较的 solr 匹配分数不同。)

【问题讨论】:

  • 这两个字段的定义是什么?您是否在debugQuery 的输出中看到该字段的命中?
  • 它们都被定义为text_general,我在debugQuery中看到它:ex.DisjunctionMaxQuery(((keywords:good)^3.0 | title:good))。而且我确实知道,对于我期望在 keywords 字段上匹配的记录,good 位于其关键字字段中,如返回结果中所示。

标签: solr edismax


【解决方案1】:

回答我自己的问题。 因为只有一条记录具有非空keywords。 根据 solr 使用的 IDF 公式,基值小于 1。因此,将其提升 ^2 根本没有帮助。 所以,我认为“解决方案”是使用非空关键字添加更多记录。当然,这不是真正的解决方案。

有关 debugQuery 的输出,请参见以下内容。

  0.84748024 = weight(keywords:good in 4161) [], result of:
    0.84748024 = score(doc=4161,freq=1.0 = termFreq=1.0
    ), product of:
      3.0 = boost
      0.2876821 = idf(docFreq=1, docCount=1)
      0.9819638 = tfNorm, computed from:
        1.0 = termFreq=1.0
        1.2 = parameter k1
        0.75 = parameter b
        5.0 = avgFieldLength
        5.2244897 = fieldLength

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多