多个连续字段的Solr Faceting

时间:2012-03-01 17:49:04

标签: solr

我需要一种方法来获得两个组合字段名称的方面。为了向您展示我的意思,请查看现在的查询:

{
  "responseHeader":{
    "status":0,
    "QTime":16,
    "params":{
      "facet":"true",
      "indent":"true",
      "q":"productId:(1 OR 2 OR 3 OR 4)",
      "facet.field":["productMetaType",
        "productId"],
      "rows":"10"}},
  "response":{"numFound":4,"start":0,"docs":[
      {
        "productId":1,
        "productMetaType":"PRIMARY_PHOTO",
        "url":"1_PRIM.JPG"},
      {
        "productId":1,
        "productMetaType":"OTHER_PHOTO",
        "url":"1_1.JPG"},
      {
        "productId":1,
        "productMetaType":"OTHER_PHOTO",
        "url":"1_2.JPG"},
      {
        "productId":2,
        "productMetaType":"OTHER_PHOTO",
        "url":"2_1.JPG"}]
  },
  "facet_counts":{
    "facet_queries":{},
    "facet_fields":{
      "productMetaType":[
        "PRIMARY_PHOTO",1,
        "OTHER_PHOTO",3],
      "productId":[
        "1",3,
        "2",1]},
    "facet_dates":{},
    "facet_ranges":{}
    }
}

我得到两个方面字段productMetaTypeproductId。我需要做的是以某种方式组合这些字段,以便我得到这样的数据:

1_PRIMARY_PHOTO, 1,
1_OTHER_PHOTO, 2, 
2_PRIMARY_PHOTO, 0,
2_OTHER_PHOTO, 1

枢轴功能是否可以执行此操作?不幸的是,我们正在运行Solr 3.1,因此无法使用数据透视表,但如果这是唯一的方法,我可能需要一些弹药进行升级。

我能想到的另一件事就是如何连接字段名称。我是索尔的新手,不知道什么是可能的。任何建议或协助表示赞赏。谢谢你的时间。

1 个答案:

答案 0 :(得分:4)

是的,Pivot可以解决问题,但正如您所观察到的,此功能仅在Solr主干中可用。

你将两个领域结合起来的想法也会奏效。实际上,如果您的字段的值有限,最简单,最灵活的方法是使用facet queries

  • productId:1 AND productMetaType:PRIMARY_PHOTO
  • productId:2 AND productMetaType:OTHER_PHOTO
  • productId:1 AND productMetaType:OTHER_PHOTO
  • productId:2 AND productMetaType:PRIMARY_PHOTO

否则,只需在您的Solr schema.xml中使用字符串类型创建一个新字段,通过添加您之前的文档来重新创建索引,但是使用这个新字段(您可以根据需要生成,使用'_'作为两个字段值之间的分隔符可以很好地工作。)