当前位置: 首页 > 知识库问答 >
问题:

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

冀冯浩
2023-03-14

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

该链接(向下一步,发现提到了长度)谈到了在索引时访问值。我希望能够在索引后这样做。该链接还谈到了将值保存为doc值,但没有给出如何这样做的示例。

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

共有1个答案

邢璞
2023-03-14

文章中提到的统计数据是指FieldinVertState。一旦有了这些信息,就可以非常简单地获取所需的统计信息(只需调用getLengthgetUniquetermCount或任何您需要的信息)。

FieldInvertState传递到Similarity,特别是传递到调用Similarity.ComputeNorm。范数值是在索引时计算和存储的,而不是在查询时求值,因此有效地使用它需要重新索引。

使用这种方法的典型方法是创建自定义Similary,可能扩展DefaultSimilary。简单地重写DefaultSimilaryLengthNorm方法是最简单的方法。它的标准实现是:

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

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

这将有助于调整基于自定义长度计算的评分。如果这不是您想要的,而是需要能够只获取信息,我认为只存储和字段,并从获取文档时返回的字段值中获取长度将是最简单的实现。

 类似资料:
  • 我试图实现一个文档索引(大致对应于DB行),其中一个字段是整数。我将它们添加到索引中,比如:

  • 我正在尝试查找不包含至少一个具有特定字段值的文档的所有文档。例如,下面是一个示例集合: 我希望找到docs块中没有包含至少一个foo=1的记录的文档的每个记录。在上面的示例中,应该只返回第二个文档。 我还查看了$nin运算符,但示例只显示数组包含基元值列表时的情况,而不是附加文档。当我尝试使用类似于下面的东西来实现这一点时,它查找的是确切的文档,而不仅仅是我想要的foo字段。 有没有用基本运算符来

  • 如何在下面的示例中从Cloud FiRecovery查询某个日期()和某些用户()的所有时间戳?现在,我可以下载整个文档并在设备上对其进行过滤。但它无效。

  • 在这里给ElasticSearch的初学者排名。 我有一个客户列表,他们的订单作为一个嵌套字段。假设文档结构如下: 我想查询的是:在两个日期之间订购了一定数量的用户列表。我希望能够将它与例如生日的范围查询结合起来。 我已经到了这样的地步,我可以使用聚合来获得每个订户在两个日期之间的排序总和: 但是,我想限制查询部分返回的结果,以便更好地与所有其他过滤器混合。 我的第一个想法是使用一个脚本过滤器,并

  • 我已经实现了Serializable、实现了hashCode和equals。 我在MongoDB文档类中使用自定义键类,如下所示。 我可以使用spring data mongodb将文档保存到mongodb中。 我首先使用的标准如下。 根据上述标准,我然后执行一个update状态, 但是,我的更新失败,出现错误,

  • 问题内容: 我有一个具有唯一的数字运行ID的文档集合,我想找到运行ID最高的文档。 我可以做两个查询。 首先,我可以找到最高的运行ID: 其次,我可以找到具有该运行ID的文档: 有没有办法我可以通过一个查询做到这一点? 问题答案: 您可以通过组合“ sort”和“ size”来实现: 这将返回最高的记录