gpt4 book ai didi

java - 如何向 Lucene/Solr 相似性类添加新方法?

转载 作者:行者123 更新时间:2023-11-30 03:46:38 28 4
gpt4 key购买 nike

我编写了一个名为 MyNewSimilarityClass 的新类,它扩展了 Solr 中的 DefaultSimilarity 类;特别是,我在该类中定义了一个自定义方法,因为现有的方法不足以满足我的需求,我想改进排名算法。

为了确保 Solr 使用我的新类,我在 schema.xml 中添加了以下行:

<similarity class="org.apache.lucene.search.similarities.MyNewSimilarityClass"/>

我知道我的类已添加到类加载器中,并且 Solr 实际上使用它:当我运行 Solr 查询时,我覆盖和修改的方法正在工作。

但是,当我运行查询时,Solr 当前不使用我的自定义方法。尽管我已经在我的类中定义了该新方法,并且我的类已按预期加载,但我不知道应该在哪里调用我的自定义方法,以便将其用于排名算法。

我知道在 Lucene/Solr 中扩展类时如何重写方法,但我不知道如何添加新/自定义方法。

我需要修改 Solr 中的哪个文件以便查询使用我的自定义方法?

最佳答案

除非您修改 Lucene 的内部工作方式,否则查询不会使用您的自定义方法。评分机制使用一个接口(interface),您可以在代码中实现该接口(interface)。这是您必须使用的,除非您想要创建 Lucene 和可能的 Solr 的自定义构建 - 我不会推荐这样做,除非您对 Lucene 和 Java 都有相当的经验并且想要为自己维护一个自定义版本。

不过,我不太确定为什么需要调用自定义方法。该界面允许应用加法和乘法评分。当您创建自定义相似性类时,您通常使用 DefaultSimilarity class作为起点,然后覆盖您想要不同得分的不同部分。没有什么可以阻止您调用自定义方法之一作为该评分方法的一部分,或者如果从父方法返回的分数在特定范围内。

参见Lucene's Practical Scoring Formula了解 DefaultSimilarity 类的每个部分的 Hook 位置(或者查看 TFIDF 相似度类以获取替代实现)。

如果您对如何使用这些类有更具体的问题,请针对您尝试过的内容以及遇到的问题提出合适的问题。

关于java - 如何向 Lucene/Solr 相似性类添加新方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495244/

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