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.
