如何将对象从String展平到SolrInputDocument

时间:2013-11-01 00:30:57

标签: solr solrj

我想知道是否可以从SolrJ发布JSON / XML strins。

我目前正从某些消息服务接收文档作为JSON字符串。

一个这样的文件如下:

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

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

我目前正在使用SolrJ,并且没有看到直接向Solr提供JSON的API。

(我看到Solr附带的post.jar能够将json / xml文件直接发布到Solr,我希望通过SolrJ API获得相同的行为)

如果没有这样的API,我该如何将字符串转换为SolrInputDocument?

1 个答案:

答案 0 :(得分:0)

您无需将其转换为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"]
}

您应该选择哪一个取决于您的查询要求。