当前位置: 首页 > 知识库问答 >
问题:

我怎么能让Lucene做简单的、平坦的得分呢?

锺离霖
2023-03-14
path: "/a/b/file.txt"
rating: 3

有什么方法可以让Lucene以概述的方式评分文档吗?针对索引运行的查询不是由用户生成的,而是由系统构建的,并附加了一个可选筛选器,这意味着它们都有一个固定的形式,由几个TermQuerys连接到一个BooleanQuery中,没有任何模糊文本搜索。目前我没有选择取代Lucene与其他东西,但建议欢迎未来的发展。

共有1个答案

刘松
2023-03-14

我怀疑有什么东西可以使用,所以很可能您需要实现自己的记分器,并在搜索时使用它。对于复杂的情况,您可能希望使用查询,但是对于像您这样的简单情况,将DefaultSimilary设置TF因子改写为原始频率(文档中指定术语的数量),并将所有其他组件改写为1就足够了。类似于这样:

public class MySimilarity extends DefaultSimilarity {

    @Override
    public float computeNorm(String field, FieldInvertState state) {
        return 1;
    }

    @Override
    public float queryNorm(float sumOfSquaredWeights) {
        return 1;
    }

    @Override
    public float tf(float freq) {
        return freq;
    }

    @Override
    public float idf(int docFreq, int numDocs) {
        return 1;
    }

    @Override
    public float coord(int overlap, int maxOverlap) {
        return 1;
    }

}

(注意,tf()是唯一返回不同于1的内容的方法)

和在IndexSearcher上刚刚设置的相似性。

 类似资料:
  • 这是我想解决的问题: 我有多个Lucene索引,每个索引包含相同数据结构的子集(它们具有相同的字段,但是字段可能存在于文档中,也可能不存在于某个索引中) 索引之间共享一个全局标识符。也就是说,如果有4个索引,最多可能有4个文档共享一个密钥。 我有一个单一的Lucene查询 我使用一起查询所有索引,并且我能够使用找出命中来自哪个子索引。到目前为止还不错,但问题是: 为了执行一个(相当复杂的)合并逻辑

  • 我该如何解决它'NumberFormatException: 我的老师让我解决两个有例外的错误,我该怎么做。。出现此错误:线程“main”java中出现异常。lang.NumberFormatException:对于输入字符串,java中的“Holaangel”。lang.NumberFormatException。java上的forInputString(NumberFormatExceptio

  • 左边这块绿色的气泡,那个三角形应该怎么实现? 如果实现了,怎么改变三角形的位置,例如放气泡上面,下面,左边或右边?

  • 本文向大家介绍让网页的字体变得清晰,变细用CSS怎么做?相关面试题,主要包含被问及让网页的字体变得清晰,变细用CSS怎么做?时的应答技巧和注意事项,需要的朋友参考一下 让文字变细有两个要素: font-weight + font-family font-weight 来控制粗细还是需要看对应的字体有没有对应的变种字体。因此这就和 font-family 相关。 -webkit-font-smoot

  • 我如何让Python完成这项任务? 每10秒,X次?

  • < b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我如何用div制作所谓的面具。你好,我正在寻找解决我问题的方法,如果有人能帮助我,我会非常感激。我希望你只能通过div看到背景。如果有人能帮助我,我会非常感激。非常感谢。亚历克斯。