当前位置: 首页 > 知识库问答 >
问题:

如何将对象从String平面化为SolrInputDocument

谢裕
2023-03-14

我目前正在从某个消息传递服务接收JSON字符串形式的文档。

其中一份文件如下:

{
  "id":"1","name":"Item 1","price":10,
  "producer":{"id":"10","name":"Prod 1",
    "address": {"id":"100","city":"City 1","zipcode":95000}
  }
}

是否需要将此字符串转换为SolrInputDocument以将其提供给Solr?

共有1个答案

经兴安
2023-03-14

您不需要将其转换为SolrinPutDocument。参见http://wiki.apache.org/solr/solrj#directly_adding_pojos_to_solr

但Solr不允许嵌套字段。您需要将JSON扁平化,即只保留标量,并且只保留数组(或列表)作为多值字段。您可以这样转换:

{
  "id":"1",
  "name":"Item 1",
  "price":10,
  "producer_id":"10",
  "producer_name":"Prod 1",
  "producer_address_id":"100",
  "producer_address_city": "city1",
  "producer_address_zipcode":95000
}

或者您也可以将生产者地址保留在多值字段中,如下所示:

{
  "id":"1",
  "name":"Item 1",
  "price":10,
  "producer_id":"10",
  "producer_name":"Prod 1",
  "producer_address":["100", "city1", "95000"]
}
 类似资料:
  • 问题内容: 如何将String对象转换为Date对象? 我想我需要做这样的事情: 任何帮助将不胜感激。 问题答案: SimpleDateFormat dateFormat = new SimpleDateFormat(“dd.MM.yyyy”); Date date = dateFormat.parse(“1.1.2001”); 有关详细信息,请参阅: SimpleDateFormat文档

  • 我有一个回应 正文 下面是我要映射的coreV2Response类

  • 问题内容: 我想将org.w3c.dom.Document对象转换为String。我正在使用Java 6,并且愿意使用能够完成任务的任何(完全免费的)技术。我从此线程尝试了解决方案- 在Java中,有比此代码更优雅的方法来将XML文档转换为Java中的String吗?,他们在哪里 但遭到了以下可怕的例外…… 问题答案: 如果您可以进行转换,则可以尝试此操作。

  • 考虑到以下几点。。 ... 我想让Jackson将类的实例序列化到以下示例JSON: JSON格式是由外部API定义的,我无法更改。 我已经发现我可以使用自定义序列化程序对列表字段进行注释,例如: ...这是我尝试的一个基本实现: 然而,这在以下情况下失败: 我还研究了使用Jackson的转换器接口,但这不适用于展开嵌套列表对象。 参见:https://stackoverflow.com/a/41

  • 问题内容: 我需要将一些对象序列化为JSON并发送到WebService。如何使用org.json库?否则我将不得不使用另一个?这是我需要序列化的类: 我只放了类的变量和构造函数,但也有getter和setter方法。所以如果有人可以帮忙 问题答案: 没有注释的简单方法是使用Gson库 就那么简单:

  • 问题内容: 使用时 从其派生的类型的对象上抛出异常。如何规避呢? 问题答案: 由于找不到合适的解决方案,因此我编写了自己的解决方案,它不是一个JSON序列化器,而是一个Javascript序列化器