![](/img/trans.png)
[英]getting the document length during query evaluation apache lucene 5.3
[英]Finding document/field length in Lucene 4
我希望能够访问索引后文档的特定字段的长度(就而言)。 最好,如果有没有重新索引的方法,我想这样做。 但是,如果以某种方式重新索引可以轻松访问此值,那也将起作用。
http://blog.mikemccandless.com/2012/03/new-index-statistics-in-lucene-40.html
该链接(稍微向下滚动并找到提到的length )谈到在索引时访问该值。 我希望能够在索引后这样做。 该链接还讨论了将值保存为 doc 值,但它没有给出如何这样做的示例。
如果有人可以提供保存文档长度或在索引后访问它的示例,那将非常有帮助。 谢谢。
文章中提到的统计数据是指FieldInvertState 。 一旦你有了它,如何获得你正在寻找的统计数据应该是相当简单的(只需调用getLength
、 getUniquetermCount
或任何你需要的)。
FieldInvertState 被传递到Similarity
,特别是调用Similarity.computeNorm
。 规范值是在索引时计算和存储的,而不是在查询时计算,因此有效利用它需要您重新索引。
使用它的典型方法是创建自定义Similarity
,可能扩展DefaultSimilarity
。 简单地覆盖DefaultSimilarity
的lengthNorm
方法将是最简单的方法。 它的标准实现是:
return (float)(1.0 / Math.sqrt(numTerms));
你可以用你喜欢的任何东西覆盖它。
这将有助于根据自定义的基于长度的计算来调整评分。 如果这不是您要查找的内容,而是需要能够仅获取该信息,我认为仅存储和字段,并从获取Document
时返回的字段值获取长度将是最简单的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.