Hi SOLR Community,

I'm experimenting with solr 8.10 and trying to get a query pattern with
child docs to work. An example of a nested document structure I'd like to
search is below. In this example, there will only be two levels, child of
type:post and /comments children.
{
    "id": "post1",
    "type": "post",
    "post_en": "I put lemon on my apple slices to keep them fresh",
    "comments": [
        {
            "id": "comment1",
            "type": "comment",
            "comment_en": "Lime works too"
        },
        {
            "id": "comment2",
            "type": "comment",
            "comment_en": "Does it work for pears?"
        }
    ]
}

What I'd like is to be able to do keyword search for /lemon apple/ and only
return the parent; /lemon lime/ and return the parent and comment1; /lemon
pear/ and return the parent and comment2; /lime pear/ and return the
parent, comment1, and comment2. And /lime gum/ should return nothing (as if
it were an AND query). Additionally, this should all be done with relevance.

I've tried a few combinations of nested docs from this documentation
<https://solr.apache.org/guide/8_10/searching-nested-documents.html>, but
am having trouble getting this to work. I wonder if I'm asking more from
block join/child doc transformer than it currently supports, or perhaps I'm
just missing something. Can someone familiar with nesting documents help me
out? I've included my schema below as well.

Thanks!
Stephen

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="ChildTest" version="1.5">
  <fields>
    <field name="id" type="string" required="true" docValues="true"/>
    <dynamicField name="*_en" type="text_en" large="true" omitNorms="true"
/>
    <field name="username" type="string" docValues="true" />
    <field name="type" type="string" docValues="true" />
    <field name="_version_" type="long" />
    <!-- child docs -->
    <field name="_root_" type="string" indexed="true" stored="false"
docValues="false" />
    <field name="_nest_path_" type="_nest_path_" />
    <field name="_nest_parent_" type="string" indexed="true" stored="true"
/>
  </fields>
  <uniqueKey>id</uniqueKey>
  <types>
    <fieldType name="_nest_path_" class="solr.NestPathField" />
    <fieldType name="long" class="solr.LongPointField" />
    <fieldType name="string" class="solr.StrField" sortMissingLast="true"
/>
    <fieldType name="text_en" class="solr.TextField"
positionIncrementGap="100" autoGeneratePhraseQueries="true">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory"/>
      </analyzer>
    </fieldType>
  </types>
</schema>

Reply via email to