多个连接字段上的Solr镶嵌面

多个连接字段上的Solr镶嵌面,solr,Solr,我需要一种方法来获得两个组合字段名上的facet。为了向您展示我的意思,请查看查询的现状: { "responseHeader":{ "status":0, "QTime":16, "params":{ "facet":"true", "indent":"true", "q":"productId:(1 OR 2 OR 3 OR 4)", "facet.field":["productMetaType",

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

{
  "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":{}
    }
}
我得到两个方面字段,
productMetaType
productId
。我需要做的是以某种方式将这些字段组合起来,以便像这样获取数据:

1_PRIMARY_PHOTO, 1,
1_OTHER_PHOTO, 2, 
2_PRIMARY_PHOTO, 0,
2_OTHER_PHOTO, 1
pivot功能可以做到这一点吗?不幸的是,我们正在运行Solr3.1,所以pivot不可用,但如果这是唯一的方法,我可能有一些弹药可以升级


我唯一能想到的另一件事是如何连接字段名。我是Solr的新手,不知道什么是可能的。任何建议或帮助都将不胜感激。谢谢您的时间。

是的,Pivot可以实现这一点,但正如您所观察到的,此功能仅在Solr trunk中可用

你把这两个领域结合起来的想法也会奏效。事实上,如果字段的值数量有限,最简单、最灵活的方法是使用:

  • productId:1和productMetaType:PRIMARY\u照片
  • productId:2和productMetaType:OTHER\u照片
  • productId:1和productMetaType:OTHER\u照片
  • productId:2和productMetaType:PRIMARY\u照片

否则,只需在Solr schema.xml中创建一个字符串类型的新字段,通过像以前一样添加文档来重新创建索引,但使用这个新字段(您可以根据需要生成,使用“u”作为两个字段值之间的分隔符将非常有效)。

效果非常好!谢谢现在,如果能够在响应中命名这些方面查询,那么我就不必解析查询来确定如何处理应用程序中的数据。无论如何,我都能做到。再次感谢!我现在没有要测试的Solr实例,但我认为您可以使用本地参数中的一个关键参数来实现这一点。看见