IDF重新计算索引中的现有文件?

时间:2019-05-18 04:04:53

标签: elasticsearch tf-idf

我经历了[相关性评分背后的理论] [1],并且遇到了两个相关问题

Q1:-由于IDF公式为idf(t) = 1 + log ( numDocs / (docFreq + 1)),其中numDocs是索引中的文档总数。这是否意味着每次在索引中添加新文档时,我们都需要重新计算索引中所有现有文档的每个单词的IDF?

Q2:-下面提到的链接声明。我的问题是,为什么要针对每个字段而不是完整的文档计算TF / IDF分数?

  

当我们参考上式中的文档时,我们实际上是   谈论文档中的字段。每个领域都有自己的   倒排索引,因此出于TF / IDF的目的,该字段的值   是文档的价值。

1 个答案:

答案 0 :(得分:0)

  1. 您仅在查询时而不是在插入时计算分数。 Lucene拥有正确的统计信息,可以快速进行计算,并且值始终是最新的。
  2. 该频率仅对单个字段有意义,因为您对该特定字段的值感兴趣。假设我们有多个字段,并且只搜索一个字段,那么我们只对那个字段的频率感兴趣。搜索多个字段时,您仍然希望控制各个字段(例如,将“标题”增加到“正文”上)或想要定义如何组合它们。如果您有没有用处的用例(不确定我现在有一个很好的例子-这在IMO上不那么常见),则可以将多个字段与copy_to合并为一个并进行搜索。