1

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

我目前正在从某些消息传递服务接收文档作为 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?

4

1 回答 1

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"]
}

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

于 2013-11-01T05:05:40.047 回答