【问题标题】:get multiple fields value inside Solr pivoting在 Solr 旋转中获取多个字段值
【发布时间】:2016-02-04 20:00:10
【问题描述】:

我有名为 categoryid、description、packid、imageurl... 的列以及许多其他列。一个有描述的类别,imageurl可以包含多个packsid。现在我需要在 solr 中找出有多少个类别以及每个类别中有多少个包。为此,我做了一个 facet.pivot on

CCategoryId,PPackId

我得到了类别 ID 和其中的 packid。但是如何获取 categoryid 的描述和 imageurl。有没有办法让我可以在枢轴本身中获取这些值以及 categoryid

这是我的 Solr api

http://172.28.0.162:8983/solr/cpaCore/select?q=PIsActive:true&wt=json&indent=true&debugQuery=true&fl=CategoryId,Description,ImageUrl, PackId, groupfield&facet=true&facet.pivot=CategoryId,PackId

我需要为每个 Categoryid 获取描述和 ImageUrl

更新 这是我在 solr 中的表 Categoryid、Description、ImageUrl、Packid、Packinfo、Packgrop……

这就是我需要的 Group by (Categoryid, Description 和 ImageUrl) 组合,然后根据上面 group by 的结果按 packid 分组

所以结果类似于

--field Category 
--value :.. , 
--field: description 
--value : , 
--field: imageurl 
--value ...  
--count : ...
-----field: packid
-----value: 1
-----count
-----field: packid
-----value: 2     

为了更清楚,以我需要的表格形式添加结果

catid  desc   imageurl packid
1      x      y        11
1      x      y        12
1      x      y        13

它还应该给我唯一的计数(catid,desc,imageurl)和这个唯一的packid计数(catid,desc,imageurl)

【问题讨论】:

    标签: solr


    【解决方案1】:

    当您进行分面(分组)时,结果将基于计数等分组函数。一旦对特定字段进行分组,其他字段值可能会有所不同。防爆

    catId、packId、desc、Img

    1,1,desc1,img1

    1,2,desc1,img1

    1,3,desc1,img1

    2,1,desc2,img2

    2,2,desc2,img2

    http://localhost:8983/solr/ram_core/select?q=*&facet=true&facet.field=catId&facet.pivot=catId,img,desc&facet.pivot=catId,packId&wt=json&indent=true
    

    这里我给出了两个枢轴,一个用于 catId、img、desc,一个用于 catid、packId

    结果: catId1,img1,desc1 - 3 catId2,img2,desc2 - 2

    catId1,packId1 - 1 catId2,packId2 - 1 catId3,packId3 - 1 catId4,packId4 - 1 catId5,packId5 - 1

    【讨论】:

    • Categoryid、description 和 imageurl 对于相同的cateogry id 总是相同的。我需要这些信息以及我在做 facet.pivot 时得到的数据,但无法获取所有字段的值
    • 好的,但是你的分面是在两个字段上,所以我认为组函数已经被评估过了,然后你现在需要上一层,只得到 cat、img 和 desc 而不是 packId。你能确认一下吗?
    • 是的,所以我可以在一个级别的多个列上执行 facet.pivot,然后在描述、categoryid 和 imageurl 上的 packid 上执行 facet.pivot,然后在 packid 上执行
    • pivot 中是否可以有多个字段
    • 好吧,我猜您的查询中已经在多个字段上执行了此操作。但是当你需要两件事时,问题就来了。因为如果您需要组合键的分面和计数,您已经在做。您可以决定其中可以容纳多少列。
    猜你喜欢
    • 2013-09-28
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多