ES学习记录9——关于Term

9.2.4 Term Vector 返回一个特定文档的信息和字段的统计信息,这里的文档可以索引中存储的文档,也可以是用户手动提供的,Term vector默认是实时的(而不是接近实时),这可以通过realtime=false进行更改,下面是个小栗子:GET /twitter/_doc/1/_termvectors// 也可以使用url中的参数指定为检索信息的字段GET /twitter/...
摘要由CSDN通过智能技术生成
9.2.4 Term Vector

 返回一个特定文档的信息和字段的统计信息,这里的文档可以索引中存储的文档,也可以是用户手动提供的,Term vector默认是实时的(而不是接近实时),这可以通过realtime=false进行更改,下面是个小栗子:

GET /twitter/_doc/1/_termvectors

// 也可以使用url中的参数指定为检索信息的字段
GET /twitter/_doc/1/_termvectors?fields=message

或者也可以在请体中添加请求字段,还可以使用通配符匹配指定的字段,注意/_termvector在ES 2.0中就已经被弃用了,替换为/_termvectors

返回值

 有三类值可以被请求:term information, term statistics and field statistics,默认情况下,所有的term information和字段statistics都会被返回,但term statistics不返回。

term information

  • 字段中term的频率(总是被返回);
  • term的定位(positions: true);
  • 开始和偏移(offsets: true);
  • term payloads(payloads: true)作为base64编码字节。

如果请求信息没有存储在索引中,如果可能的话它将在运行时计算。此外,trem vetors可以不仅仅计算索引中已存在的文档,而且可以包含用户提供的文档。

Term statistics(Term统计信息,即将该某个字段里面的单词全都拆开成独立的单词进行分析)

 将term_statistics设置为true将会返回这个Term statistics:

  • term_freq(total term frequency),term的频率(在当前文档中该term出现的次数);
  • doc_freq(document frequency)文档频率(包含当前term的文档数量,含有该term的文档有多少);
  • ttf(该term在所有文档中出现的次数)
  • tokens包含该term的详细信息:
    • position:以单词为单位(不含空格),一个单词占一个索引,从0开始,表示该term的索引位置;
    • start_offset:以字符为单位(包含空格),一个字符占一个索引,从0开始,表示该term的第一个字符的索引位置(包含该位置);
    • end_offset:以字符为单位(包含空格),一个字符占一个索引,从0开始,表示该term的最后一个字符的索引位置(不包含该位置);
    • payload:主要用于自定字段的权重;

默认情况下,这些值不会被返回,因为term statistics可能会对性能有严重的影响。

Field statistics(字段统计信息)

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

  • doc_sount文档数(索引下总共有多少文档包含了这个字段,只要字段名相同就算,字段值不一定要相同);
  • sum_doc_freq文档频率的总和(在这个字段中所有term的文档频率总和,这里理解下来,每个文档中该字段中总共含有多个单词,将所有包含该字段的文档都这样计算后进行加和即可,注意同一个文档中重复出现的单词只算一次,不同文档中含有相同单词可以重复算);
  • sum_ttf(sum of total term frequencies)总的term频率之和(在该字段中每个trem的总频率之和,我自己理解下来就是每个文档中该字段中总共含有多个单词,将所有包含该字段的文档都这样计算后进行加和,这里不管同一文档中对应字段中的单词是否重复);

Terms Filtering

 使用filter参数,还可以根据其 tf-idf 的分数过滤返回的term,这对于找出文档的良好特征 term 可能是有用的,下面是支持的子参数:

max_num_terms

每个字段必须返回的最大term数量,默认 25

min_term_freq

忽略源文档中低于此频率的单词,默认 1

max_term_freq

忽略源文档中超过此频率的单词,默认无界

min_doc_freq

忽略至少在这么多文档中没有出现的术语,默认 1.

max_doc_freq

忽略超过这么多文档中出现的单词,默认无界

min_word_length

最小字长,低于该字长将被忽略,默认 0.

max_word_length

最大字长,高于该字长将被忽略,默认无界 (0).

行为

 term和字段统计并不是准确的,删除的文档也是计算到里面的,仅为请求的文档所在的分片检索信息。因此,term和字段统计仅用作相对度量,而绝对数量在此上下文中没有意义。默认情况下,当人造文档请求term vector,从随机选择的碎片中获取统计信息,使用routing取寻找命中特定的碎片。

案例1:返回存储的term vetors

// 1.创建一个存储了term vectors的索引
PUT /twitter/
{
    "mappings": {
   
    "_doc": {
    // 文档类型
      "properties": {
    // 文档各个属性字段的定义
        "text": {
   
          "type": "text",
          "term_vector": "with_positions_offsets_payloads",
          "store" : true,
          "analyzer" : "fulltext_analyzer"
         },
         "fullname": {
   
          "type": "text",
          "term_vector": "with_positions_offsets_payloads",
          "analyzer" : "fulltext_analyzer"
        }
      }
    }
  },
  "settings" : {
   
    "index" : {
   
      "number_of_shards" : 1,
      "number_of_replicas" : 0
    },
    "analysis": {
   
      "analyzer": {
   
        "fulltext_analyzer": {
   
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值