【问题标题】:"Term Vector API" clarification required需要“术语向量 API”说明
【发布时间】:2017-04-07 18:07:50
【问题描述】:

我不确定我是否正确理解了Term Vectors API

文档开头说:

返回有关特定文档字段中术语的信息和统计信息。该文档可以存储在索引中,也可以由用户人工提供。默认情况下,词向量是实时的,而不是接近实时的。这可以通过将realtime参数设置为false来改变。

我猜,这里的 term 指的是其他人称之为 token 的东西吗?还是 term 是在我们到达文档时定义的,而我错过了它?

然后文档继续说返回值包含三个部分:词条信息词条统计信息字段统计信息。我猜这意味着 term 信息和统计信息不是这个 API 返回的唯一内容,对吗?

然后词条信息包含一个名为payloads的字段,没有定义,我也不知道是什么意思。

然后在字段统计中,有文档频率的总和总词频的总和,解释相当混乱:

将 field_statistics 设置为 false(默认为 true)将省略:

文档数(包含该字段的文档数)

文档频率总和(该字段中所有术语的文档频率总和)

总词频的总和(该字段中每个词的总词频之和)

我猜它们只是术语统计中报告的相应值的总和?

然后在 行为 部分中它说:

术语和字段统计信息不准确。不考虑已删除的文档。仅针对请求的文档所在的分片检索信息。因此,术语和字段统计信息仅用作相对度量,而绝对数字在此上下文中没有任何意义。默认情况下,当请求人工文档的术语向量时,会随机选择一个从中获取统计信息的分片。仅使用 routing 来命中特定分片。

那么它是哪一个?实时与否?还是说词条信息是实时的,词条统计字段统计只是对现实的近似?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我猜,这里的术语指的是其他人可能会称之为令牌的东西?还是我们在文档中到达此处时定义的术语而我错过了它?

    termtoken 是同义词,仅表示分析过程中产生并已在 Lucene 倒排索引中编入索引的任何内容。

    然后文档继续说返回值分为三个部分:词条信息、词条统计信息和字段统计信息。我猜这意味着术语信息和统计信息不是此 API 返回的唯一内容,对吗?

    默认情况下,调用会返回术语信息和字段统计信息,但必须使用&term_statistics=true 明确请求术语统计信息。

    然后Term信息中包含一个叫payloads的字段,没有定义,也不知道是什么意思。

    payload 是一个 Lucene 概念,here 解释得很好。术语有效负载不可用,除非您有一个使用delimited-payload 令牌过滤器的自定义分析器来提取它们。

    然后在字段统计中,有文档频率总和和总词频总和,解释相当混乱:

    [...]

    我猜它们只是术语统计中报告的相应值的总和?

    “文档频率”的总和是字段中出现的每个术语在同一文档中出现的次数。所以如果该字段包含“big brown fox”,它会统计“big”在同一个文档中出现的次数,“brown”在同一个文档中出现的次数,对于“fox”也是如此。

    “总词条频率”的总和是该字段中的每个词条出现在 Lucene 索引(位于 ES 索引的单个分片上)中的所有文档中的次数。所以如果该字段包含“big brown fox”,它会统计“big”在所有文档中出现的次数,“brown”在所有文档中出现的次数,对于“fox”也是如此。

    那么它是哪一个?实时与否?还是说词条信息是实时的,词条统计和字段统计只是对现实的一种近似?

    默认情况下它是实时的,这意味着在发出_termvectors 调用时会发出refresh call,以便从Lucene 索引中获取最新信息。但是,统计信息仅从单个分片收集,这并不能提供整个 ES 索引(可能由多个分片组成,因此有多个 Lucene 索引)的统计信息的整体视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多