加速 elasticsearch more_like_this 查询

Speeding up elasticsearch more_like_this query

我有兴趣为给定的输入文档(类似于 KNN)获取类似的文档。由于向量化大小不相似的文档(使用 doc2vec)会导致文档向量不一致,然后计算用户输入的向量(可能只有少数 terms/sentences 比较了训练 doc2vec 模型的文档关于每个文档将由 100 或 1000 个单词组成的位置)尝试查找 k-最近邻会由于缺少特征而产生不正确的结果。

因此,我继续使用 more_like_this 查询,与 kNN 相比,它的工作类似,无论用户输入的大小如何,因为我'我只对分析文本字段感兴趣。

但是当我在 elasticsearch 中索引了数百万个文档时,我担心性能。文档说在索引时使用term_vector存储词向量可以加快分析速度。 但我不明白的是文档在这种情况下指的是哪种类型的术语向量。由于存在三种不同类型的术语向量:术语信息、术语统计和字段统计。 术语统计和字段统计计算术语相对于索引中其他文档的频率,当我在索引中引入新文档时,这些向量不会过时吗? 因此,我假设 more_like_this 文档指的是术语信息(这是一个特定文档中的术语信息,与其他文档无关)。

任何人都可以告诉我在索引时间仅计算术语信息向量是否足以加速 more_like_this?

不必担心term vectors会过时,因为它们是为每个文档存储的,所以它们会分别更新。

对于更多类似的,只要有term_vectors:yes就足够了,你不需要有偏移量和位置。因此,如果您不打算使用高亮显示,那么使用默认的应该没问题。

因此,对于您的文本字段,您需要具有这样的映射,这足以加快 MLT 的执行速度:

{
  "mappings": {
    "properties": {
      "text": {
        "type":        "text",
        "term_vector": "yes"
      }
    }
  }
}