lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Umesh Prasad <umesh.i...@gmail.com>
Subject Re: Mixing ordinary and nested documents
Date Fri, 18 Jul 2014 17:00:56 GMT
Comments inline


On 16 July 2014 20:31, Bjørn Axelsen <bjorn.axelsen@fagkommunikation.dk>
wrote:

> Hi Solr users
>
> I would appreciate your inputs on how to handle a *mix *of *simple *and
> *nested
> *documents in the most easy and flexible way.
>
> I need to handle:
>
>    - simple documens: webpages, short articles etc. (approx. 90% of the
>    content)
>    - nested documents: books containing chapters etc. (approx 10% of the
>    content)
>
>


> For simple documents I just want to present straightforward search results
> without any grouping etc.
>
> For the nested documents I want to group by book and show book title, book
> price etc. AND the individual results within the book. Lets say there is a
> hit on "Chapters 1" and "Chapter 7" within "Book 1" and a hit on "Article
> 1", I would like to present this:
>
> *Book 1 title*
> Book 1 published date
> Book 1 description
> - *Chapter 1 title*
>   Chapter 1 snippet
> - *Chapter 7 title*
>   CHapter 7 snippet
>
> *Article 1 title*
> Article 1 published date
> Article 1 description
> Article 1 snippet
>
> It looks like it is pretty straightforward to use the CollapsingQParser to
> collapse the book results into one result and not to collapse the other
> results. But how about showing the information about the book (the parent
> document of the chapters)?
>

You can map the child document to parent  doc id space and extract the
information from parent doc id.

First you need to generate child doc to parent doc id mapping one time.
  You can get the parent bitset by running a the parent doc type query on
the solr indexsearcher.
Then child bitset by runnning the child doc type query. Then  use these
together to create a int[] where int[i] = parent of i. This result is
cachable till next commit. I am doing that for computing facets from fields
in parent docs and sorting on values from parent docs (while getting child
docs as output).




> 1) Is there a way to do an* optional block join* to a *parent *document and
> return it together *with *the *child *document - but not to require a
> parent document?
>
> - or -
>
> 2) Do I need to require parent-child documents for everything? This is
> really not my preferred strategy as only a small part of the documents is
> in a real parent-child relationship. This would mean a lot of dummy child
> documents.
>
>

>
> - or -
>
> 3) Should I just denormalize data and include the book information within
> each chapter document?
>
> - or -
>
> 4) ... or is there a smarter way?
>
> Your help is very much appreciated.
>
> Cheers,
>
> Bjørn Axelsen
>



-- 
---
Thanks & Regards
Umesh Prasad

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message