正在加载

将静态相关性信号纳入评分

Elastic Stack 无服务器

许多领域都具有已知与相关性相关的静态信号。例如,PageRank 和 url 长度是网络搜索中常用的两个特征,用于独立于查询来调整网页的分数。

有两种主要的查询允许将静态分数贡献与文本相关性结合起来,例如,使用 BM25 计算。

例如,假设您有一个 pagerank 字段,您希望将其与 BM25 分数结合,以便最终分数等于 score = bm25_score + pagerank / (10 + pagerank)

使用 script_score 查询,查询将如下所示

 GET index/_search {
  "query": {
    "script_score": {
      "query": {
        "match": { "body": "elasticsearch" }
      },
      "script": {
        "source": "_score * saturation(doc['pagerank'].value, 10)"
      }
    }
  }
}
  1. pagerank 必须映射为 数值

而使用 rank_feature 查询,它将如下所示

 GET _search {
  "query": {
    "bool": {
      "must": {
        "match": { "body": "elasticsearch" }
      },
      "should": {
        "rank_feature": {
          "field": "pagerank",
          "saturation": {
            "pivot": 10
          }
        }
      }
    }
  }
}
  1. pagerank 必须映射为 rank_feature 字段

虽然这两种选择都会返回类似的分数,但存在权衡:script_score 提供了很大的灵活性,使您可以根据自己的喜好将文本相关性分数与静态信号相结合。另一方面,rank_feature 查询仅公开了将静态信号纳入评分的几种方法。但是,它依赖于 rank_featurerank_features 字段,这些字段以特殊方式索引值,允许 rank_feature 查询跳过非竞争性文档并更快地获得查询的最高匹配项。

© . All rights reserved.