排名特征字段类型编辑

一个 rank_features 字段可以索引数值特征向量,以便它们可以稍后在查询中使用 rank_feature 查询来提升文档。

它类似于 rank_feature 数据类型,但更适合特征列表稀疏的情况,在这种情况下,为每个特征添加一个字段到映射中是不合理的。

response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        topics: {
          type: 'rank_features'
        },
        negative_reviews: {
          type: 'rank_features',
          positive_score_impact: false
        }
      }
    }
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 1,
  body: {
    topics: {
      politics: 20,
      economics: 50.8
    },
    negative_reviews: {
      "1star": 10,
      "2star": 100
    }
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 2,
  body: {
    topics: {
      politics: 5.2,
      sports: 80.1
    },
    negative_reviews: {
      "1star": 1,
      "2star": 10
    }
  }
)
puts response

response = client.search(
  index: 'my-index-000001',
  body: {
    query: {
      rank_feature: {
        field: 'topics.politics'
      }
    }
  }
)
puts response

response = client.search(
  index: 'my-index-000001',
  body: {
    query: {
      rank_feature: {
        field: 'negative_reviews.1star'
      }
    }
  }
)
puts response
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "topics": {
        "type": "rank_features" 
      },
      "negative_reviews" : {
        "type": "rank_features",
        "positive_score_impact": false 
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "topics": { 
    "politics": 20,
    "economics": 50.8
  },
  "negative_reviews": {
    "1star": 10,
    "2star": 100
  }
}

PUT my-index-000001/_doc/2
{
  "topics": {
    "politics": 5.2,
    "sports": 80.1
  },
  "negative_reviews": {
    "1star": 1,
    "2star": 10
  }
}

GET my-index-000001/_search
{
  "query": { 
    "rank_feature": {
      "field": "topics.politics"
    }
  }
}

GET my-index-000001/_search
{
  "query": { 
    "rank_feature": {
      "field": "negative_reviews.1star"
    }
  }
}

排名特征字段必须使用 rank_features 字段类型

与分数负相关的排名特征需要声明它

排名特征字段必须是具有字符串键和严格正数值的哈希表

此查询根据文档与“政治”主题的相关程度对文档进行排名。

此查询根据文档收到的“1 星”评论数量对文档进行反向排名。

rank_features 字段仅支持单值特征和严格正值。多值字段和零或负值将被拒绝。

rank_features 字段不支持排序或聚合,只能使用 rank_featureterm 查询进行查询。

term 查询在 rank_features 字段上的评分是通过将匹配的存储特征值乘以提供的 boost 来计算的。

rank_features 字段仅保留 9 个有效位用于精度,这相当于大约 0.4% 的相对误差。

与分数负相关的排名特征应将 positive_score_impact 设置为 false(默认值为 true)。这将被 rank_feature 查询用来修改评分公式,使分数随着特征值的增加而降低,而不是增加。