[ 
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.

Reply via email to