我不确定我是否正确理解Term Vectors API。
该文件首先说:
返回特定文档字段中术语的信息和统计信息。该文档可以存储在索引中或由用户人工提供。术语向量默认是实时的,而不是接近实时的。这可以通过将
realtime
参数设置为false来更改。
我猜测,术语这里是指其他人可能称之为令牌的可能吗?或者术语是在我们在文档中找到并且我错过了它的时候定义的
然后,文档继续说返回值有三个部分:术语信息,术语统计和字段统计。我想这意味着 term 信息和统计数据不是这个API返回的唯一内容,对吗?
然后术语信息包含一个名为payloads
的字段,该字段未定义,我不知道它的含义。
然后在字段统计中,文档频率的总和和总词频的总和,其中有一个相当混乱的解释:
将field_statistics设置为false(默认为true)将省略:
文档计数(包含此字段的文档数)
文档频率之和(此字段中所有术语的文档频率总和)
总项频率之和(该字段中每个项的总项频率之和)
我猜他们只是术语统计中报告的相应值的总和?
然后在行为部分中说:
术语和字段统计信息不准确。删除的文档不会被考虑在内。仅为请求的文档所在的分片检索信息。因此,术语和字段统计仅用作相对度量,而绝对数字在此上下文中没有意义。默认情况下,在请求人工文档的术语向量时,随机选择用于获取统计数据的分片。仅使用
routing
来点击特定分片。
那是哪一个?实时与否?或者术语信息是实时的,术语统计和字段统计仅仅是现实的近似值?
答案 0 :(得分:2)
我猜,这里的术语是指一些其他人会称之为令牌的东西吗?或者是我们在文档中找到的时间定义的术语,我错过了它?
term
和token
是同义词,只是表示分析过程中出现的任何内容,并已在Lucene倒排索引中编入索引。
然后文档继续说返回值有三个部分:术语信息,术语统计和字段统计。我想这个术语信息和统计数据并不是这个API返回的唯一内容,对吗?
默认情况下,该调用会返回术语信息和字段统计信息,但必须使用&term_statistics=true
明确请求术语统计信息。
然后,术语信息包括一个称为有效载荷的字段,该字段未定义,我不知道它的含义。
payload
是一个Lucene概念,很好地解释了here。除非您的自定义分析器使用delimited-payload令牌过滤器来提取它们,否则术语有效负载不可用。
然后在现场统计中,有一个文件频率和总词频之和的总和,有一个相当混乱的解释:
[...]
我猜他们只是术语统计中报告的相应值的总和?
“文档频率”的总和是该字段中每个术语出现在同一文档中的次数。因此,如果该字段包含“大棕狐”,它将计算同一文档中“大”出现的次数,“棕色”出现在同一文档中的次数和“狐狸”的相同次数。
“总术语频率”的总和是该字段中存在的每个术语出现在Lucene索引中存在的所有文档中的次数(位于ES索引的单个碎片上)。因此,如果该字段包含“大棕狐”,它将计算所有文档中出现“大”的次数,所有文档中出现“褐色”的次数,“狐狸”出现相同的次数。
那是哪一个?实时与否?或者,术语信息是实时的,术语统计和现场统计仅仅是现实的近似值吗?
默认情况下是实时,这意味着在发出_termvectors
调用时会生成refresh call,以便从Lucene索引中获取新信息。但是,仅从单个分片收集统计信息,这不会全面显示整个ES索引的统计信息(可能由多个分片组成,因此有几个Lucene索引)。