The articleId field is the only field in the correlation file so I just
need to get that one working.

I tried butting the condition in the forEach secion. If I hardcode a value,
like 0104, it works but it doesn't work with the variable. Haven't looked
at the sourcecode yet but maybe forEach doesn't support variables? That
could be a nice patch :)

I thought about $skipDoc but can't figure out how I want to use it, since I
want to add the field, it's just that it picks the wrong value. Do you have
something in mind in how to use it for my use-case?

I'll take a look at the source code to see if it can be a bug.

/Tobias

2012/7/22 Alexandre Rafalovitch <arafa...@gmail.com>

> I am still struggling with nested DIH myself, but I notice that your
> correlation condition is on the field level (@StoreId='${store.id}).
> Were you planning to repeat it for each field definition?
>
> Have you tried putting it instead in the forEach section?
>
> Alternatively, maybe you need to use $skipDoc as in the Wikipedia
> import example?
>
> Regards,
>    Alex.
> Personal blog: http://blog.outerthoughts.com/
> LinkedIn: http://www.linkedin.com/in/alexandrerafalovitch
> - Time is the quality of nature that keeps events from happening all
> at once. Lately, it doesn't seem to be working.  (Anonymous  - via GTD
> book)
>
>
> On Sat, Jul 21, 2012 at 1:34 PM, Tobias Berg <tobias.h...@gmail.com>
> wrote:
> > Hi,
> >
> > I'm trying to index a set of stores and their articles. I have two
> > XML-files, one that contains the data of the stores and one that contains
> > articles for each store. I'm using DIH with XPathEntityProcessor to
> process
> > the file containing the store, and using a nested entity I try to get all
> > articles that belongs to the specific store. The problem I encounter is
> > that every store gets the same articles.
> >
> > For testing purposes I've stripped down the xml-files to only include
> id:s
> > for testing purposes. The store file (StoresTest.xml) looks like this:
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <Stores><Store><Id>0102</Id></Store><Store><Id>0104</Id></Store></Stores>
> >
> > The Store-Articles relations file (StoreArticlesTest.xml) looks like
> this:
> > <?xml version="1.0" encoding="utf-8"?><StoreArticles><Store
> > StoreId="0102"><ArticleId>18004</ArticleId></Store><Store
> >
> StoreId="0104"><ArticleId>17004</ArticleId><ArticleId>10004</ArticleId></Store></StoreArticles>
> >
> > And my dih-config file looks like this:
> >
> > <dataConfig>
> >         <dataSource type="FileDataSource" encoding="UTF-8" />
> >         <document>
> >    <entity name="store"
> > processor="XPathEntityProcessor"
> > stream="true"
> > forEach="/Stores/Store"
> > url="../../../data/StoresTest.xml"
> > transformer="TemplateTransformer"
> >>
> > <field column="id"  xpath="/Stores/Store/Id" />
> > <entity name="storearticle"
> > processor="XPathEntityProcessor"
> > stream="true"
> > forEach="/StoreArticles"
> > url="../../../data/StoreArticlesTest.xml"
> > transformer="LogTransformer"
> > logTemplate="Processing ${store.id}" logLevel="info"
> > rootEntity="true">
> >  <field column="store_articles_txt"
> xpath="/StoreArticles/Store[@StoreId='${
> > store.id}']/ArticleId" />
> > </entity>
> >    </entity>
> > </document>
> > </dataConfig>
> >
> > The result I get in Solr is this:
> >
> > <response>
> > <lst name="responseHeader">...</lst>
> > <result name="response" numFound="2" start="0">
> > <doc>
> > <str name="id">0102</str>
> > <arr name="store_articles_txt">
> > <str>18004</str>
> > </arr>
> > </doc>
> > <doc>
> > <str name="id">0104</str>
> > <arr name="store_articles_txt">
> > <str>18004</str>
> > </arr>
> > </doc>
> > </result>
> > </response>
> >
> > As you see, both stores gets the article for the first store. I would
> have
> > expected the second store to have two articles: 17004 and 10004.
> >
> > In the log messages printed using LogTransformer I see that each
> > store.idis processed but somehow it only picks up the articles for the
> > first store.
> >
> > Any ideas?
> >
> > /Tobias Berg
>

Reply via email to