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