在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。我看到的平均,求和等功能很少。但是似乎无法获得百分比1。
答案 0 :(得分:1)
无法使用内置功能来做到这一点。我建议的是在客户端执行-例如接收此JSON响应,解析计数字段并按所需方式计算百分比。
另一种选择是编写自定义的Solr Component,它将包含在solrconfig.xml中的组件链中。这将使您可以更改响应。但是,这将需要在Solr本身的更新/迁移和许多其他困难期间保留此自定义jar。 对于这个简单的任务,我建议使用第一种方法