gpt4 book ai didi

lucene - Solr/Lucene 记分员

转载 作者:行者123 更新时间:2023-12-04 02:11:08 24 4
gpt4 key购买 nike

我们目前正在为使用 Solr 的客户进行概念验证,并且已经能够配置他们想要的所有功能,但评分除外。

问题是他们想要分数使结果落入桶中:

  • 桶 1:完全匹配类别(分数 = 4)
  • 存储桶 2:名称完全匹配(分数 = 3)
  • 桶 3:类别部分匹配(分数 = 2)
  • 桶 4:名称部分匹配(分数 = 1)

  • 我们做的第一件事是开发一个自定义相似度类,它会根据字段和完全或部分匹配返回正确的分数。

    现在唯一的问题是,当文档在类别和名称上都匹配时,分数会加在一起。

    示例:搜索“restaurant”会返回“餐厅”类别中名称中也包含“餐厅”一词的文档,因此得分为 5 (4+1),但它们应该只得到 4。

    我假设要让它起作用,我们需要开发一个自定义的 Scorer 类,但我们不知道如何将它合并到 Solr 中。
    另一种选择是创建一个自定义的 SortField 实现,类似于 Solr 中已经存在的 RandomSortField。

    也许还有一个我们不知道的更简单的解决方案。

    欢迎所有建议!

    最佳答案

    Scorer 是 lucene 查询的一部分,通过 'weight' 查询方法。

    简而言之,框架调用 Query.weight(..).scorer(..) 。看一下

    http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Query.html

    http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Weight.html

    http://lucene.apache.org/jva/2_4_0/api/org/apache/lucene/search/Scorer.html

    要在 Solr 中使用您自己的 Query 类,您需要实现您自己的 solr QueryParserPlugin,该插件使用您自己的 QParser 来生成您之前实现的 lucene 查询。然后,您可以在此处指定的 Solr 中使用它:

    http://wiki.apache.org/solr/SolrPlugins#QParserPlugin

    这部分实现应该保持简单,因为这只是一些粘合代码。

    享受黑客 Solr!

    关于lucene - Solr/Lucene 记分员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035831/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com