索引中有两个文档。一个包含字段:
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个字符长的术语,并且如何发现foo
和bar
在第一个文档中是按顺序排列的,并赋予它较高的分数?
答案 0 :(得分:0)
在开始时,Elasticsearch中的相关性/得分不是最容易的部分。分数计算基于三个主要部分:
简短地:
我建议您阅读以下材料:
但另外,得分将取决于您使用的查询类型。例如,对于match
查询foo bar
搜索词,更适合foo bar
文档到第二个文档。