Hello Federic,
It sounds like blockParent domain change see.
https://solr.apache.org/guide/solr/latest/query-guide/json-faceting-domain-changes.html#block-join-domain-changes

On Thu, Jan 25, 2024 at 12:15 PM Frederic Font Corbera <
[email protected]> wrote:

> Hi everyone,
>
> I'm one of the developers behind the Freesound website (
> https://freesound.org, a sound sharing website), we use Solr as our search
> engine and I'm currently experimenting with a new feature that I'd like to
> implement using Solr. In summary, we have a Solr index with one document
> per sound in our database and we do standard search operations there.
> However, I'd like to add child documents to each of the main documents
> which include specific information about the sounds at different points in
> time. For example, I have a main document with basic properties like sound
> title and tags, but then have N child documents that have a timestamp field
> and some extra information  associated with that time stamp. Here is
> simplified example of a document that could be indexed (normally my child
> documents would include also dense vector fields):
>
> [
>   {
>     "ID": "1",
>     "title": "Recording of a street ambience",
>     "tags": ['urban', 'ambience', 'dogs', 'birds'],
>     "duration": 1:21,
>     "events": [{
>         "ID": "1/events#0",
>         "timestamp": 0:23,
>         "event_description": "Dog barking"
>       },{
>         "ID": "1/events#1",
>         "timestamp": 0:47,
>         "event_description": "Bird calls"
>       },{
>         "ID": "1/events#2",
>         "timestamp": 1:05,
>         "event_description": "Dog barking"
>       },
>       ...
>     ]
>   },
>   ...
> ]
>
> What I want to achieve is to do a query that matches child documents and
> sorts them according to some score, but I want to do faceting based on
> parent document fields. For example, I want to get all documents in which a
> "Dog barking" event happens (and if a document has 2 such events like in
> the example, I want the document returned 2 times), I want them sorted by
> the score of the child document, but I want to include faceting data for,
> e.g. the "duration" field (which refers to the parent document).
>
> One solution would be to duplicate all the parent document fields in every
> child document at index time. This would work, but then I would get a lot
> of redundant information in the index.
>
> What I think would work best would be a way to extend the child document
> fields and include the fields of the parent at "query time". So I'd like to
> specify the field list with something like
> "fl=timestamp,event_description,__parent__.duration". Is that possible?
>
> I tried other approaches that might work like the parent query parser which
> will return parent documents whose child documents match some criteria, but
> this has the problems of not telling me which of the child documents
> matched the query, and also it will not sort them as expected because the
> score is not propagated to the parent document.
>
> That is all, thanks a lot for the support!
>
> Cheers,
>
> frederic
>
>
>
>
>
> --
> Frederic Font - ffont.github.io
> Music Technology Group, UPF - mtg.upf.edu <https://www.upf.edu/web/mtg/>
> Freesound - freesound.org
>


-- 
Sincerely yours
Mikhail Khludnev

Reply via email to