我想使用elasticsearch功能得分自定义评分,这些是我的排名优先事项:
>
与查询的共同术语数(例如,一个文档在查询中有4个术语中的3个,无论每个术语的TF/IDF得分有多大,它的排名都应该高于一个文档在查询中有4个术语中的2个)。在弹性文献中,它被称为协调因子。
术语相关性之和。(过渡联邦/以色列国防军)
文档受欢迎程度(每个文档的票数,如《受欢迎程度提升》中所述)
这是当前使用的elasticsearch请求的主体:
body = {
"query": {
"function_score": {
"query": {
{'match': {'text': query}}
},
"functions": [
{
"field_value_factor": {
"field": "ducoumnet_popularity",
}
}
],
}
}
}
问题是第一优先级不满足这个请求。例如,文档A的查询公共术语比文档B少,但由于其公共术语有更多的TF/IDF得分,文档A的排名比文档B高。
为了防止这种情况,我认为最好的办法是通过协调因素来提高文件的得分。有什么办法可以做到这一点吗?类似于此请求的内容:
body = {
"query": {
"function_score": {
"query": {
{'match': {'text': query}}
},
"functions": [
{
"field_value_factor": {
"field": "ducoumnet_popularity",
},
"field_value_factor": {
"field": "_coordination"
"weight": 10
}
}
],
}
}
}
我没有找到这个问题的确切答案,但它可能会帮助人们知道您可以使用minimum_should_match
限制结果中文档的最小精度。
{
"query": {
"match": {
"content": {
"query": "quick brown dog",
"minimum_should_match": 75%
}
}
}
}
它接受许多不同配置。更多解释:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimal-show-match.html
这是一个关于2个查询的故事。一个返回结果,而另一个不返回结果。为什么? 返回结果的查询:
问题内容: 我想获取与“ statusCode”不匹配的结果:200 为了匹配字段中的文本,您可以使用 我尝试过这样的事情: 根据:https : //www.elastic.co/guide/zh- CN/elasticsearch/reference/current/query-dsl-bool- query.html 问题答案: 试试这个
问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。
假设我的索引有两个文档: “Foo Bar” “Bar Foo” 当我对“bar foo”进行常规匹配查询时,两个文档都正确匹配,但它们获得了相等的相关性分数。然而,我希望单词的顺序在评分时是有意义的。换句话说,我希望“Bar Foo”有更高的分数。 因此,我尝试将match查询放在bool查询的must子句中,并包含一个match_prach(具有相同的查询字符串)作为shoul子句。在我使用“
问题内容: 我目前正在做一个包含多重匹配和功能得分的查询。JSON的重要部分如下所示: 但是,我也想包括不一定与查询匹配但具有大于0的特定数值的结果。我认为布尔查询可以做到这一点,但是我不知道如何将布尔查询与功能分数查询。 我知道多重匹配查询只是布尔查询的简写,我可以将多重匹配查询扩展到其布尔匹配部分,但是,我不知道如何在其中进行功能评分。 有任何想法吗?顺便说一下,我的版本是1.1.0。 问题答
我从这里学了一个例子 索引的映射为 索引的文档是 在对“full_text”字段使用简单的匹配查询时,我注意到如下所示 我看到文件是匹配的。另外,如果我使用大写字母,也就是“quick”作为搜索词,它显示文档是匹配的。 为什么会这样?。默认情况下,标记器会将“full_text”字段中的文本拆分为“quick”、“foxes”。那么,匹配查询如何与文档匹配大小写值呢?