【问题标题】:Solr fuzzy match has better score than exact matchSolr 模糊匹配比精确匹配有更好的分数
【发布时间】:2013-12-11 17:48:07
【问题描述】:

我在 Solr 中进行模糊搜索,在极少数情况下,精确匹配的得分低于模糊匹配。我什至找到了使用 debugQuery 的原因:模糊匹配匹配了 3 个不同的单词,而精确匹配只匹配了一个。因此,3 场比赛的“总和”比一场比赛的价值更高。 Here 是“解释”的一部分。

是否有任何方法可以配置 Solr 以使精确匹配的排名高于模糊匹配,即使在这种情况下也是如此?

附:我已经在使用omitTermFreqAndPositions="true" omitNorms="true",但是如果我们对不同的词进行模糊匹配,这将无济于事。

【问题讨论】:

  • 您在寻找特定的解决方案吗?看起来是对的。这就是为什么您需要使用模糊查询的 OR 查询来执行具有更高提升的精确匹配的布尔查询,以便精确匹配的排名更高。
  • 这看起来像是有效的解决方案,如果我找不到另一个,我会这样做。但似乎对 Solr 来说是双重工作,执行两次搜索。

标签: solr lucene


【解决方案1】:

您需要使用模糊查询的布尔 OR 查询来执行具有更高提升的精确匹配布尔查询,以便精确匹配排名更高。不要担心 solr 的双重工作。它是为非常复杂的 Lucene 查询树而构建的。使用查询组合来获得预期的相关性排名是常见的做法。如果你同意,请。接受我的回答。

【讨论】:

  • Hey Arun,多么好的答案 +1,5 秒内解决了我的问题 :)
  • 感谢 arun,ngramText:"sementes" OR sementes 成功了!为什么这不是 Solr 的默认设置?
  • arun,实际上它没有正常工作。这样做实际上使它返回所有搜索的所有结果,而不是将其限制为匹配:(
  • @brauliobo 查询应该类似于field:(value~2 OR value^3)
【解决方案2】:

我遇到了类似的问题,并通过使用copyField 解决了这个问题 在单独的字段上进行精确和模糊(在我的情况下是语音)匹配。

然后使用EdisMaxqf 字段为精确字段上的匹配赋予更高的权重 vs 模糊匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 2012-04-30
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多