我的索引中有两个文档。一个包含字段:
name: foo bar
字符串
和另一
name: foo xyz bar xyz foo xyz bar xyz foo xyz bar xyz foo xyz bar
型
我是这样使用ngram分析器的:
"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个字符长度,它是如何发现foo
和bar
在第一个文档中是顺序排列的,并为它分配更高的分数的?
1条答案
按热度按时间beq87vna1#
Elasticsearch中的相关性/评分在您开始时并不是最容易的部分。评分计算基于三个主要部分:
转瞬间:
我建议您阅读以下材料:
但是另外,分数将取决于您使用的查询类型。例如,对于
match
查询,foo bar
搜索项比第二个更适合foo bar
文档。