>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
===============================================================

Reply via email to