SOLR是否支持复合类型,例如multiValued字段的结构?

时间:2014-03-05 08:59:28

标签: json types solr structure

我需要添加multiValued字段,它将是结构。 类似的东西:

           

其中:

class ComplexPhone [
    String area;
    String number;
    String internal;
    String type;
]

我想以json格式从SOLR收到这些数据:

{
  "responseHeader": {
    "status": 0,
    "QTime": 1,
    "params": {
      "indent": "true",
      "q": "*:*",
      "_": "1394008742077",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 1,
    "start": 0,
    "docs": [
      {
        "first_name": "Funky",
        "last_name": "Koval",
        "phone": [
          {
             "area": "US",
             "number": "555-123-456-789",
             "internal": "011,
             "type": "S",

          },
          {
             "area": "UK",
             "number": "1234-5678",
             "internal": "9001",
             "type": "L",

          }
        ]
        "id": 1,
        "_version_": 1461724104955527200
      }
    ]
  }
}

这只是一个例子(我不想只有电话号码)。

对我来说最重要的是SOLR的响应格式。 我可以用任何简单的格式添加这些数据,如: Funky,Koval,英国; 1234-5678; 9001; L,美国; 555-123-456-789; 011;小号 或

<doc>
<field name="first_name">Funky</field>
<field name="last_name">Koval</field>
<field name="phone">UK; 1234-5678; 9001; L</field>
<field name="phone">US; 555-123-456-789; 011; S</field>
<field name="id">1</field>
</doc>

它可以作为字符串存储在SOLR中。 我需要的只是更复杂格式的响应,然后将平面结构映射到JSON。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

Solr支持 multuValued 字段。但它不支持多级数据结构。您无法从Solr获得以下类型的响应。

"phone": [
          {
             "area": "US",
             "number": "555-123-456-789",
             "internal": "011,
             "type": "S",

          },
          {
             "area": "UK",
             "number": "1234-5678",
             "internal": "9001",
             "type": "L",

          }

multiValued字段提供的内容类似于

"phone": [
          "UK",
          "1234-5678",
          "9001",
          "L"
        ]

建议:

  1. 您可以更简单的方式设计数据,以便它可以适合Solr提供的单值/多值字段。
  2. 将Solr中的复杂结构化数据保存为字符串或某种合适类型的字段。在您的应用程序中解析数据以获得实际值。
  3. 您可以参考What is the use of "multiValued" field type in Solr?