Hi Mikhail,  Thank you for the quick response!

If I instead of:

add() - fakeparent000 : [single001]

I do :

add() - single000 : [fakeChild001]

will this prevent the index from appearing corrupted?  This way I can
retain my logical top level docs.

What is the reason I need add a fake doc?  If I add nested documents N
levels deep, creating a tree, do I need to ensure fake documents are
created to tree max depth?  Or is it sufficient only for the top level?


On Thu, Jun 26, 2014 at 2:12 PM, Mikhail Khludnev <
mkhlud...@griddynamics.com> wrote:

> Hello Elliot,
>
> Parent doc is mandatory, you can't omit it.
> Thus instead of:
> add() - single001
>
> you have to
>
> add() - fakeparent000 : [single001]
>
> there was no plans to support any sort of flexibility there...
>
>
>
> On Thu, Jun 26, 2014 at 9:52 PM, Elliot Ickovic <elliot.icko...@gmail.com>
> wrote:
>
> > Using Solr 4.8.1.
> >
> > I am creating an index containing Solr documents both with and without
> > nested documents.  When Indexing documents from a single SolrJ client on
> a
> > single thread if I do not call commit() after each document add() I see
> > some erroneous documents returned from my "child of" or "parent which"
> > block queries.  Here is an example:
> >
> > I have a required field 'doc-type' used for the block join.  For example
> I
> > have 3 types {'parent', 'child', 'single'}  where parent has 1 or more
> > nested child docs and single never has a nested doc.
> >
> > CASE 1:
> > ================================
> > I add / commit docs in this order
> >
> > add() - single001
> > add() - parent001 : [child001, child002]
> > commit()
> >
> > then query all child docs of every parent doc
> >
> > .....   {!child of='doc-type:parent'}doc-type:parent
> >
> > response contains *single001*, child001, child002 -- INCORRECT *single001
> > *is
> > not a child.
> > ================================
> >
> > CASE 2:
> > ================================
> > I add / commit docs in this order
> >
> > add() - single001
> > *commit()  added commit here*
> >
> > add() - parent001 : [child001, child002]
> > commit()
> >
> > then query all child docs of every parent doc
> >
> > .....   {!child of='doc-type:parent'}doc-type:parent
> >
> > response contains only {child001, child002}   -- CORRECT
> > ================================
> >
> > CASE 2 will only work when a single solr client is adding docs.  If
>  spawn
> > a bunch of threads that do adds I will not be able to guarantee that
> commit
> > is called between adds.
> > Additionally, I am not 100% sure calling commit() is the correct solution
> > it just seems to work where I have tested.
> >
> > I'd greatly appreciate if someone can shed some light on this problem or
> > help me better understand the limitations of the block indexing and block
> > join.
> >
>
>
>
> --
> Sincerely yours
> Mikhail Khludnev
> Principal Engineer,
> Grid Dynamics
>
> <http://www.griddynamics.com>
>  <mkhlud...@griddynamics.com>
>

Reply via email to