"术语矢量API"澄清要求

时间:2016-11-23 16:19:54

标签: elasticsearch

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

该文件首先说:

  

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

我猜测,术语这里是指其他人可能称之为令牌的可能吗?或者术语是在我们在文档中找到并且我错过了它的时候定义的

然后,文档继续说返回值有三个部分:术语信息术语统计字段统计。我想这意味着 term 信息和统计数据不是这个API返回的唯一内容,对吗?

然后术语信息包含一个名为payloads的字段,该字段未定义,我不知道它的含义。

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

  

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

     

文档计数(包含此字段的文档数)

     

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

     

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

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

然后在行为部分中说:

  

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

那是哪一个?实时与否?或者术语信息是实时的,术语统计字段统计仅仅是现实的近似值?

1 个答案:

答案 0 :(得分:2)

  

我猜,这里的术语是指一些其他人会称之为令牌的东西吗?或者是我们在文档中找到的时间定义的术语,我错过了它?

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

  

然后文档继续说返回值有三个部分:术语信息,术语统计和字段统计。我想这个术语信息和统计数据并不是这个API返回的唯一内容,对吗?

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

  

然后,术语信息包括一个称为有效载荷的字段,该字段未定义,我不知道它的含义。

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

  

然后在现场统计中,有一个文件频率和总词频之和的总和,有一个相当混乱的解释:

     

[...]

     

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

“文档频率”的总和是该字段中每个术语出现在同一文档中的次数。因此,如果该字段包含“大棕狐”,它将计算同一文档中“大”出现的次数,“棕色”出现在同一文档中的次数和“狐狸”的相同次数。

“总术语频率”的总和是该字段中存在的每个术语出现在Lucene索引中存在的所有文档中的次数(位于ES索引的单个碎片上)。因此,如果该字段包含“大棕狐”,它将计算所有文档中出现“大”的次数,所有文档中出现“褐色”的次数,“狐狸”出现相同的次数。

  

那是哪一个?实时与否?或者,术语信息是实时的,术语统计和现场统计仅仅是现实的近似值吗?

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