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 ShalinMangar:
http://wiki.apache.org/solr/DataImportHandler

The comment on the change is:
Added detail on script transformer

------------------------------------------------------------------------------
   * '''`replaceWith`''' : Used alongwith `regex` . It is equivalent to the 
method `new String(<sourceColVal>).replaceAll(<regex>, <replaceWith>)`
  Here the attributes 'regex' and 'sourceColName' are custom attributes used by 
the transformer. It reads the field 'full_name' from the resultset and 
transform it to two target fields 'firstName' and 'lastName' . So even though 
the query returned only one column 'full_name' in the resultset the solr 
document gets two extra fields 'firstName' and 'lastName' wich are 'derived' 
fields.
  
- The 'emailids' field in the table can be a comma separated value. So it ends 
up giving out one or more than one email ids and we expect the 'mailId' to be a 
multivalued field in Solr
+ The 'emailids' field in the table can be a comma separated value. So it ends 
up giving out one or more than one email ids and we expect the 'mailId' to be a 
multivalued field in Solr.
+ 
+ === ScriptTransformer ===
+ It is possible to write transformers in Javascript or any other scripting 
language supported by Java. You must use '''Java 6''' to use this feature.
+ 
+ {{{
+ <dataConfig>
+       <script>
+               <![CDATA[
+               function f1(row)        {
+                   row.put('message', 'Hello World!');
+                   return row;
+               }
+               ]]>
+       </script>
+       <document>
+               <entity name="e" pk="id" transformer="script:f1" query="select 
* from X">
+                 ....
+                 </entity>
+         </document>
+ </dataConfig>
+ }}}
+ 
+  * You can put script tags 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"''
+  * 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)
+  * 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.
  
  == EntityProcessor ==
  Each entity is handled by a default Entity processor called 
!SqlEntityProcessor. This works well for systems which use RDBMS as a 
datasource. For other kind of datasources like  REST or Non Sql datasources you 
can choose to implement this interface 
`org.apache.solr.handler.dataimport.Entityprocessor`

Reply via email to