【问题标题】:Lucene numDocs and doqFreq on custom similarity class自定义相似类上的 Lucene numDocs 和 doqFreq
【发布时间】:2011-02-04 11:36:18
【问题描述】:

我正在用 Lucene 做一个应用程序(我是一个菜鸟)并且我面临一些问题。 我的应用程序使用具有自定义相似性实现的 Lucene 2.4.0 库(已导入 jar)

在我的应用程序中,我手动计算 doqFreq 和 numDocs(我添加所有索引的值,然后我计算一个全局值以便在每个查询中使用它)并且我想在自定义相似性实现中使用该值按顺序计算新的 IDF。

问题是我不知道如何在新的相似性实现上使用(或发送)我的应用程序中的新 doqFreq 和 numDocs 值,因为我不想在这个额外的类之外更改 lucene 的代码。

有什么建议或例子吗?我阅读了文档,但我现在不知道如何解决这个问题:s

谢谢

【问题讨论】:

  • 为什么要手动计算 docFreq 和 numDocs?听起来像是一个令人头疼的维护问题。
  • 第一次我计算每个服务器的 docFreq 和 numDocs,然后我计算一个全局值,我发送给所有服务器以计算 idf。

标签: lucene similarity tf-idf


【解决方案1】:

您可以尝试扩展 IndexReader 并覆盖 IndexReader.docFreq() 和 IndexReader.numDocs()。在此子类型中,您可以提供您正在手动计算的内容。我不确定是否还有其他依赖于这些值的 Lucene 组件,因此您可能需要在此处谨慎行事。

【讨论】:

  • 这看起来是个好主意。但是,请注意 Lucene 会在索引时计算大部分此类内容,因此如果您仅在检索期间修改相似度计算,您可能无法获得所需的效果。
  • 好吧,我通过更改自定义相似性实现(几个函数)的一些参数解决了这个问题,还没有问题。正如 Yuval F 所说的那样,我不会得到我想要的结果。谢谢
猜你喜欢
  • 2016-02-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多