【问题标题】:how does elasticsearch ngrams scoring work?elasticsearch ngrams 评分如何工作?
【发布时间】:2018-08-13 14:12:48
【问题描述】:

我的索引中有两个文档。一个包含字段:

 name: foo bar

还有一个

 name: foo xyz bar xyz foo xyz bar xyz foo xyz bar xyz foo xyz bar

我正在使用这样的 ngrams 分析器:

"analysis": {
  "analyzer": {
    "ngram_analyzer": {
      "tokenizer": "ngram_tokenizer"
    }
  },
  "tokenizer": {
    "ngram_tokenizer": {
      "type": "ngram",
      "min_gram": 3,
      "max_gram": 3,
      "token_chars": [
        "letter",
        "digit",
        "whitespace"
      ]
    }
  }
}

当我搜索foo bar 时,第一个文档的得分高于第二个。这就是我想要的,但任何人都可以解释这个评分是如何工作的吗?据我所知,ngram 将它们拆分为 3 个字符长度的术语,它如何发现 foobar 在第一个文档中按顺序排列并为其分配更高的分数?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    当您开始时,Elasticsearch 中的相关性/评分并不是最简单的部分。分数计算基于三个主要部分:

    • 词频
    • 逆文档频率
    • 字段长度规范

    很快:

    • 该术语在字段中出现的频率越高,相关性越高
    • 该词在整个索引中出现的频率越高,相关性越低
    • 期限越长,相关性越高

    我建议您阅读以下材料:

    但另外分数将取决于您使用的查询类型。例如 match 查询 foo bar 搜索词更适合 foo bar 记录到第二个。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多