我正在尝试在Lucene上实施BM25f评分系统。为了满足我的需要,我需要根据here对原始实现进行一些小的修改,我在获得平均字段长度和文档长度的部分迷路了......有人可以指导我如何或在哪里得到它?
答案 0 :(得分:1)
您可以从与文档字段关联的TermVector
个实例中获取字段长度,但这会增加索引大小。这可能是要走的路,除非你买不起更大的指数。当然,您仍然需要自己计算平均值,并将其存储在其他地方(或者可能存储在具有众所周知的外部ID的特殊文档中,您只需在统计信息更改时更新)。
如果您可以将数据存储在索引之外,那么您可以做的一件事是在文档被标记化时计算标记,并存储计数以进行平均。如果您的文档集是静态的,只需将每个字段的值转储到文件和文件中。索引后的过程。如果索引需要仅使用添加进行更新,则可以存储文档数和每个字段的平均长度,并重新计算平均值。如果要删除文档,并且您需要准确计数,则需要重新解析要删除的文档以了解每个字段包含的术语数,或者如果您使用的话,请从TermVector
获取长度这一点。