[
https://issues.apache.org/jira/browse/SOLR-1357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12782925#action_12782925
]
Lars Grote commented on SOLR-1357:
----------------------------------
Hello,
I think the way Avlesh suggested is more intuitive. At least I tried exactly
that and wondered why it did not work.
This is what I think would be the best:
{code:java}
// a Field like this:
@Field("*_brands")
Map<String,Integer> brands;
{code}
you should add data like this:
{code:java}
brands.put("Nokia", 1000);
brands.put("Samsung", 100);
{code}
and get the data out like this:
{code:java}
bean.getBrands().get("Nokia");
bean.getBrands().get("Samsung");
{code}
I used the idear of Jean and enhanced it to work like shown above.
I attached a patch for this, maybe someone can have a look. It is not well
tested.
I have never upload a Patch or something before. so if i'm doing something
wrong, or do not follow the rules or anything.
Please tell me.
Regards, Lars
> SolrInputDocument cannot process dynamic fields
> -----------------------------------------------
>
> Key: SOLR-1357
> URL: https://issues.apache.org/jira/browse/SOLR-1357
> Project: Solr
> Issue Type: Improvement
> Components: clients - java
> Reporter: Avlesh Singh
>
> Adding data via {{SolrInputDocument}} is normally done by calling the
> {{addField}} method with a field name, field value and an optional boost. In
> case of dynamic fields, if field names are known upfront, then caller of this
> method just passes in the right name and it automatically works.
> This does not go well with users who use {...@interface Field}} annotations
> for automatic binding.
> As of SOLR-1129, users can annotate {{Map<String, String> propertyName}} with
> {...@field ("field_*")}} kind of annotations to bind dynamic field data to.
> {{SolrInputDocument}} should exhibit the same behavior. The field {{value}}
> currently supported are - primitive, array, collection or an instance of
> Iterable. It can also take {{Map}} as values. If the field, for which
> {{addField}} method is called, is of dynamicField type (which can be derived
> from the field name), then the keys of the {{Map}}, passed as value, should
> be used to "compose" the correct field name.
> This should be supported
> {code:java}
> //This code sample should populate the dynamic fields "brands_Nokia" and
> "brands_Samsung"
> public class MyBean{
> @Field("brands_*)
> Map<String, Integer> brands;
>
> ...
> }
> Map<String, String> brands= new HashMap<String, String>();
> brands.put("Nokia", 1000);
> brands.put("Samsung", 100);
> MyBean myBean = new MyBean();
> myBean.setBrands(brands);
> solrServer.addBean(myBean);
> {code}
> We can think of supporting this too ...
> {code:java}
> //This code sample should populate the dynamic fields "brands_Nokia" and
> "brands_Samsung"
> Map<String, String> brands= new HashMap<String, String>();
> brands.put("Nokia", 1000);
> brands.put("Samsung", 100);
> SolrInputDocument doc = new SolrInputDocument();
> doc.addField("brands_*", brands);
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.