1

SolrJ から JSON/XML 文字列を投稿できるかどうか知りたいです。

現在、一部のメッセージング サービスからドキュメントを JSON 文字列として受信しています。

そのようなドキュメントの 1 つが次のとおりです。

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

Solr に提供するために、この文字列を SolrInputDocument に変換する必要がありますか?

現在 SolrJ を使用していますが、JSON を Solr に直接提供するための 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 に答える