对每个桶的 solr 刻面进行百分比计算



在solr中,我无法计算每个桶的百分比。

当我对数据使用 solr 进行分面时,我需要根据其父存储桶查看每个存储桶的百分比。

假设我们有一个分面数据,如下所示

{
"facets": {
"top_genres": {
"buckets": [
{
"val": "Fantasy",
"count": 1000,
"top_authors": {
"buckets": [
{
"val": "Mercedes Lackey",
"count": 500
},
{
"val": "Piers Anthony",
"count": 500
}
]
}
},
{
"val": "Mystery",
"count": 1000,
"top_authors": {
"buckets": [
{
"val": "James Patterson",
"count": 250
},
{
"val": "Patricia Cornwell",
"count": 750
}
]
}
}
]
}
}
}

我可以得到每个存储桶的百分比吗,如下所示,

{
"facets": {
"top_genres": {
"buckets": [
{
"val": "Fantasy",
"count": 1000,
"top_authors": {
"buckets": [
{
"val": "Mercedes Lackey",
"count": 500,
"p":50 // percentage distribution
},
{
"val": "Piers Anthony",
"count": 500
"p":50
}
]
}
},
{
"val": "Mystery",
"count": 1000,
"top_authors": {
"buckets": [
{
"val": "James Patterson",
"count": 250,
"p":25
},
{
"val": "Patricia Cornwell",
"count": 750,
"p":75
}
]
}
}
]
}
}
}

我正在使用 solr 7.2。我看到很少有函数来平均、求和等。但似乎无法获得百分比一。

没有办法使用内置功能来做到这一点。我的建议是在客户端执行此操作 - 例如,获取此 JSON 响应,解析计数字段并按照您想要的方式计算百分比。

另一种选择是编写自定义 Solr 组件,该组件将包含在 solrconfig.xml 中的组件链中。这将使您能够访问更改响应。但是,这将需要在Solr本身的更新/迁移以及许多其他困难期间保留此自定义jar。 对于这个简单的任务,我建议使用第一种方法

最新更新