- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题需要您的帮助。我在文档上的客户来源具有unitid
字段。我想将当前的单位客户列为第一位。因此,我尝试使用脚本评分,但是所有文档项目的评分均被计算为0,但从未成功。成功得分后,我将按得分对结果进行排序。
这是我的过滤器脚本;
.ScriptScore(s => s
.Script(ss => ss
.Source($"doc['unitid'].value == params.unitid ? _score = 1 : _score = 0")
.Params(new Dictionary<string, object>() { { "unitid", filter.UnitId } })
)
)
这就是我的全部查询;
.Query(q => q
.Bool(b => b
.Filter(m => m
.Prefix(t => t.CustomerName, filter.CustomerName?.ToUpper()) && m
.Terms(t => t
.Field(f => f.CustomerTypeId)
.Terms(new List<int> { 2, 3 })
) && m
.ScriptScore(s => s
.Script(ss => ss
.Source($"doc['unitid'].value == params.unitid ? _score = 1 : _score = 0")
.Params(new Dictionary<string, object>() { { "unitid", 272 } })
)
)
)
))
.Aggregations(a => a
.Terms("distinct_accounts", c => c
.Field(x => x.AccountId
.Suffix("keyword")
)
))
.Sort(s => s
.Descending("_score")
.Descending(a => a.ModifyDate));
结果,我在哪里做错了,请您能帮我吗?
最佳答案
脚本分数查询的源脚本需要返回分数值,而不是将其分配给诸如_score
之类的变量
.ScriptScore(s => s
.Script(ss => ss
.Source($"doc['unitid'].value == params.unitid ? 1 : 0")
.Params(new Dictionary<string, object>() { { "unitid", filter.UnitId } })
)
)
编辑:
.Query()
部分,但是它需要一个完整的查询。另外,查询是
inside a bool query filter clause, meaning that scoring is ignored。
var client = new ElasticClient();
var filter = new
{
CustomerName = "foo",
UnitId = 1
};
var response = client.Search<Product>(s => s
.Query(q => q
.Bool(b => b
.Should(s => s
.Term(t => t
.Boost(10)
.Field("unitid")
.Value(filter.UnitId)
)
)
.Filter(fi => fi
.Prefix(t => t.CustomerName, filter.CustomerName?.ToUpper()),
fi => fi
.Terms(t => t
.Field(f => f.CustomerTypeId)
.Terms(new List<int> { 2, 3 })
)
)
)
)
.Aggregations(a => a
.Terms("distinct_accounts", c => c
.Field(x => x.AccountId
.Suffix("keyword")
)
)
)
.Sort(s => s
.Descending("_score")
.Descending(a => a.ModifyDate)
)
);
产生查询
{
"aggs": {
"distinct_accounts": {
"terms": {
"field": "accountId.keyword"
}
}
},
"query": {
"bool": {
"filter": [{
"prefix": {
"customerName": {
"value": "FOO"
}
}
},
{
"terms": {
"customerTypeId": [
2,
3
]
}
}
],
"should": [{
"term": {
"unitid": {
"value": 1,
"boost": 10.0
}
}
}]
}
},
"sort": [{
"_score": {
"order": "desc"
}
},
{
"modifyDate": {
"order": "desc"
}
}
]
}
在这里,如果文档的
unitid
值为1,则其分数会提高十倍。我认为无论如何实际上都不需要提高,因为
unitid
值不为1的文档将没有分数,而其他查询位于过滤器分数中,因此不会对分数有所贡献。在存在
unitid
子句的情况下,在
should
子句中对
filter
进行术语查询时,此查询可作为增强信号,因为文档不需要与要返回的查询匹配,但如果匹配,则
should
子句中的分数将被添加到其他查询的分数中以形成总体分数,我认为这将达到您想要的目标。
关于sorting - Elasticsearch.Net用NEST计算自定义文档项目得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63336773/
学生分数的正则表达式是什么:12.5, 99.5, 87, 1.66 该字段可以为空 (.) 的最大字符长度为 5,如下所示:99.99 分数介于 0 到 100 之间 我用过这个,但是不起作用 va
对于服务器游戏...我有表珠宝: rank,player_id, plscore. 我想显示按分数从高到低排序的前 10 名玩家,如果当前玩家不在前 10 名,则加上当前玩家的分数。 如果我/你目前不
我的游戏中颜色很少: class GameScene: SKScene { let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColo
我正在尝试用 HTML 创建一个简单的多项选择程序,但我在获取用户输入并在最后显示他们的分数时遇到了问题。有人可以帮帮我吗? 我的多项选择测验有 10 个问题,每个问题有 4 个选择。 例如有一个问题
有谁知道如何使用 Foursquare API 获取 field 的分数/评级(例如 9.0/10)? 我正在通过无用户访问进行连接。 https://developer.foursquare.com
我希望能够计算一个矩形相对于矩形网格的 Jaccard 分数/距离(距离为 1 分)。我的网格是 50x50(总共 1625625 个矩形)。 我能够在 0.34 秒内针对所有这些计算出我的输入矩形的
我有这样的文件(当然是简化的情况): Category: A, Rating: 10 Category: A, Rating: 9 Category: A, Rating: 5 Category: B
我想每秒将分数增加 1 分,但我很难让它正常工作。 例如 (伪代码): int score = 0f // on create updateEverySecond() { score += 1
我现在正在制作一款新游戏,您可以在其中保存您的高分,但我不知道是否可以实现 Facebook 排行榜。这样用户就可以看到他们的 friend 并看到他们的高分是多少。这可能吗?好吧,我在不同的应用程序
谁能帮我把它转换成 C#。这真的伤害了我的大脑。 http://www.evanmiller.org/how-not-to-sort-by-average-rating.html require 's
最好的方法是什么才能让标签包含击杀数、生命值或随着与其相关的变量发生变化而更新的分数?目前我只是使用 SKLabelNode 并使用变量为其分配文本,但未计算文本属性,因此它在初始化后保持静态。每次更
我有一个 Wordpress 网站。尝试使用 Google PageSpeed Insights Tool 获得 100/100 分数,但遇到 1 个“错误”。谷歌表示; Eliminate rend
自 V5 以来,与 V4 相比,评分发生了变化。该文档解释了性能、渐进式 Web 应用程序、可访问性、最佳实践和 SEO 的分数,但没有解释总体分数。根据图片,桌面版为 59。 任何人都可以帮助我了解
我运行了自述文件中的示例代码 tryolabs/TLSphinx README.md ,Hypothesis的text属性的结果是空格,而score属性的结果是负数-4420。 为什么我在假设的文本属
确保我做对了: 如果我们使用 sklearn.metrics.log_loss独立的,即 log_loss(y_true,y_pred),它产生一个正分数——分数越小,性能越好。 但是,如果我们使用
我有一个 iframe加载第三方小部件。我只想显示这个iframe在我的页面加载后,因为我不想减慢我的页面加载速度。我关注了 medium article其中描述了如何执行此操作,但他们的解决方案不起
我是一名优秀的程序员,十分优秀!