繁体   English   中英

在 Lucene 4 中查找文档/字段长度

[英]Finding document/field length in Lucene 4

我希望能够访问索引后文档的特定字段的长度(就而言)。 最好,如果有没有重新索引的方法,我想这样做。 但是,如果以某种方式重新索引可以轻松访问此值,那也将起作用。

http://blog.mikemccandless.com/2012/03/new-index-statistics-in-lucene-40.html

该链接(稍微向下滚动并找到提到的length )谈到在索引时访问该值。 我希望能够在索引后这样做。 该链接还讨论了将值保存为 doc 值,但它没有给出如何这样做的示例。

如果有人可以提供保存文档长度或在索引后访问它的示例,那将非常有帮助。 谢谢。

文章中提到的统计数据是指FieldInvertState 一旦你有了它,如何获得你正在寻找的统计数据应该是相当简单的(只需调用getLengthgetUniquetermCount或任何你需要的)。

FieldInvertState 被传递到Similarity ,特别是调用Similarity.computeNorm 规范值是在索引时计算和存储的,而不是在查询时计算,因此有效利用它需要您重新索引。

使用它的典型方法是创建自定义Similarity ,可能扩展DefaultSimilarity 简单地覆盖DefaultSimilaritylengthNorm方法将是最简单的方法。 它的标准实现是:

return (float)(1.0 / Math.sqrt(numTerms));

你可以用你喜欢的任何东西覆盖它。

这将有助于根据自定义的基于长度的计算来调整评分。 如果这不是您要查找的内容,而是需要能够仅获取该信息,我认为仅存储和字段,并从获取Document时返回的字段值获取长度将是最简单的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM