[ 
https://issues.apache.org/jira/browse/SOLR-1357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741854#action_12741854
 ] 

Noble Paul commented on SOLR-1357:
----------------------------------

for the bean
{code:java}
public class MyBean{
  @Field("brands_*)
  Map<String, Integer> brands;
  
  ...
}
{code}


the following should not work
{code:java}
brands.put("Nokia", 1000);
brands.put("brands_Samsung", 100);
{code}

but this should work
{code:java}
brands.put("brands_Nokia", 1000);
brands.put("brands_Samsung", 100);
{code}

we may not need to support it is SolrInputDocument


> 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