在查询评估过程中获取文档长度apachelucene 5.3



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

你说得没错,当文档被索引时存储它是最好的方法。存储它的位置在规范中(不要与queryNorm混淆,这是不同的)。范数提供与字段一起存储的单个值,该值在查询时可用于评分。

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

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

相关内容

  • 没有找到相关文章

最新更新