Thanks Edward. Good addition.
I didn't know there are users for javascript . So I was lazy to document it
--Noble

On Thu, Jan 29, 2009 at 12:30 AM, Apache Wiki <wikidi...@apache.org> wrote:
> Dear Wiki user,
>
> You have subscribed to a wiki page or wiki category on "Solr Wiki" for change 
> notification.
>
> The following page has been changed by EdwardRudd:
> http://wiki.apache.org/solr/DataImportHandler
>
> The comment on the change is:
> documented on removing entries from row and using arrays for ScriptTransformer
>
> ------------------------------------------------------------------------------
>  </dataConfig>
>  }}}
>
> + Another more complex example
> + {{{
> + <dataConfig>
> +       <script><![CDATA[
> +               function CategoryPieces(row)    {
> +                   var pieces = row.get('category').split('/');
> +                     var arr = new java.util.ArrayList();
> +                   for (var i=0; i<pieces.length; i++) {
> +                        arr.add(pieces[i]);
> +                     }
> +                     row.put('categorypieces', arr);
> +                     row.remove('category');
> +                     return row;
> +               }
> +       ]]></script>
> +       <document>
> +               <entity name="e" pk="id" transformer="script:CategoryPieces" 
> query="select * from X">
> +                 ....
> +                 </entity>
> +         </document>
> + </dataConfig>
> + }}}
> +
>   * You can put a script tag inside the ''dataConfig'' node. By default, the 
> language is assumed to be Javascript. In case you're using another language, 
> specify on the script tag with attribute `'language="MyLanguage"'` (must be 
> supported by java 6)
>   * Write as many transformer functions as you want to use. Each such 
> function must accept a ''row'' variable corresponding to ''Map<String, 
> Object>'' and return a row (after applying transformations)
> +  * To remove entries from the row use row.remove(keyname);
> +  * To add multiple entries for a single field use var arr = new 
> java.util.ArrayList(), you can't use a JavaScript array.
> +  * Documentation for the Java Map object 
> [http://java.sun.com/javase/6/docs/api/java/util/Map.html Java 6 Map]
> +  * Documentation for the Java ArrayList object 
> [http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html Java 6 
> ArrayList]
>   * Make an entity use a function by specifying 
> ''transformer="script:<function-name>"'' in the ''entity'' node.
>   * In the above data-config, the javascript function ''f1'' will be executed 
> once for each row returned by entity e.
>   * The semantics of execution is same as that of a java transformer. The 
> method can have two arguments as in 'transformRow(Map<String,Object> , 
> Context context) in the abstract class 'Transformer' . As it is javascript 
> the second argument may be omittted and it still works.
> +
>  [[Anchor(DateFormatTransformer)]]
>  === DateFormatTransformer ===
>  There is a built-in transformer called the !DateFormatTransformer which is 
> useful for parsing date/time strings into java.util.Date instances.
>



-- 
--Noble Paul

Reply via email to