【问题标题】:getting the document length during query evaluation apache lucene 5.3在查询评估apache lucene 5.3期间获取文档长度
【发布时间】:2016-01-07 13:40:58
【问题描述】:

我正在尝试更改 apache lucene 5.3 中的评分,对于我的公式,我需要文档长度(文档中的标记数)。我从类似问题的答案中了解到,您没有简单的方法来做到这一点。因为 lucene 不会将其保留在索引中。所以我想也许在索引时我会创建一个从 docID 到文档长度的 Map,然后在查询评估中使用它。但是,我不知道我应该把这张地图放在哪里以及我会在哪里更新它。

【问题讨论】:

    标签: apache lucene


    【解决方案1】:

    你说的很对,在文档被索引时存储它是最好的方法。存储它的地方是规范(不要与 queryNorm 混淆,这是不同的东西)。规范提供与字段一起存储的单个值,该值可在查询时用于评分。

    在您的Similarity 实现中,这应该进入ComputeNorm 方法,该方法通过FieldInvertState 公开您需要的信息,尤其是FieldInvertState.getLength()。通过LeafReader.GetNormValues 在搜索时提供规范。

    如果您要扩展TFIDFSimilarity,则只需实现encodeNormValuedecodeNormValuelengthNorm 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2011-11-05
      • 1970-01-01
      • 2010-12-23
      • 2010-11-20
      相关资源
      最近更新 更多