所有令牌的总数

时间:2015-12-02 06:46:31

标签: elasticsearch

是否可以从给定索引的所有分片中的字段获取所有标记的ttf(总项频率)?

e.g。我有:

PUT /index/type/1
{
  "sentence": "delicious cake"
}

PUT /index/type/2
{
  "sentence": "horrible cake"
}

我想得到:

cake 2
horrible 1
delicious 1

也可以为多个字段执行此操作(假设我有sentence1sentence2并且我想在它们的串联上运行这样的计数?)

我知道termvectors给出了ttf,而mtermvectors可以为多个文档执行此操作,但之后我必须查看所有文档并以某种方式处理结果。

如果我可以控制K,实际上只有前K个术语对我来说就足够了。

1 个答案:

答案 0 :(得分:1)

如果你的字段'句子'分析您可以使用Terms Facet获得TTF:

POST /index/type/_search
{
  "query": {
    "match_all": {}
  },
  "facets" : {
      "sentence" : {
          "terms" : {
              "field" : "sentence",
              "size" : 10
          }
    }
  }
}

TTF将成为回应的一部分

您还可以传递字段数组["句子","句子2"]来计算多个字段的TTF

POST /index/type/_search
{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "multiple_sentence" : {
            "terms" : {
                "fields" : ["sentence", "sentence2"],
                "size" : 10
            }
        }
    }
}