if you wish to use conditional copy you can use a RegexTransformer <field column="guid" xpath="/rss/channel/guid"/> <field column="id" regex=".*" sourceColName="guid" replaceWith="${entityname.guid}"/>
this means that if guid!= null 'id' will be set to guid On Mon, Sep 14, 2009 at 4:16 PM, Grant Ingersoll <gsing...@apache.org> wrote: > As I said, copying is not an option. That will break everything else. > > On Sep 14, 2009, at 1:07 AM, Noble Paul നോബിള് नोब्ळ् wrote: > >> The XPathRecordreader has a limit one mapping per xpath. So copying is >> the best solution >> >> On Mon, Sep 14, 2009 at 2:54 AM, Fergus McMenemie <fer...@twig.me.uk> >> wrote: >>>> >>>> I'm trying to import several RSS feeds using DIH and running into a >>>> bit of a problem. Some feeds define a GUID value that I map to my >>>> Solr ID, while others don't. I also have a link field which I fill in >>>> with the RSS link field. For the feeds that don't have the GUID value >>>> set, I want to use the link field as the id. However, if I define the >>>> same XPath twice, but map it to two diff. columns I don't get the id >>>> value set. >>>> >>>> For instance, I want to do: >>>> schema.xml >>>> <field name="id" type="string" indexed="true" stored="true" >>>> required="true"/> >>>> <field name="link" type="string" indexed="true" stored="false"/> >>>> >>>> DIH config: >>>> <field column="id" xpath="/rss/channel/item/link" /> >>>> <field column="link" xpath="/rss/channel/item/link" /> >>>> >>>> Because I am consolidating multiple fields, I'm not able to do >>>> copyFields, unless of course, I wanted to implement conditional copy >>>> fields (only copy if the field is not defined) which I would rather not. >>>> >>>> How do I solve this? >>>> >>> >>> How about. >>> >>> <entity name="x" ... transformer="TemplateTransformer"> >>> <field column="link" xpath="/rss/channel/item/link" /> >>> <field column="GUID" xpath="/rss/channel/GUID" /> >>> <field column="id" template="${x.link}" /> >>> <field column-"id" template="${x.GUID}" /> >>> >>> The TemplateTransformer does nothing if its source expression is null. >>> So the first transform assign the fallback value to ID, this is >>> overwritten by the GUID if it is defined. >>> >>> You can not sort of do if-then-else using a combination of template >>> and regex transformers. Adding a bit of maths to the transformers and >>> I think we will have a turing complete language:-) >>> >>> fergus. >>> >>>> Thanks, >>>> Grant >>> >>> -- >>> >>> =============================================================== >>> Fergus McMenemie Email:fer...@twig.me.uk >>> Techmore Ltd Phone:(UK) 07721 376021 >>> >>> Unix/Mac/Intranets Analyst Programmer >>> =============================================================== >>> >> >> >> >> -- >> ----------------------------------------------------- >> Noble Paul | Principal Engineer| AOL | http://aol.com > > -------------------------- > Grant Ingersoll > http://www.lucidimagination.com/ > > Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids) using > Solr/Lucene: > http://www.lucidimagination.com/search > > -- ----------------------------------------------------- Noble Paul | Principal Engineer| AOL | http://aol.com