Implementing a Lucene Index for Internal Search

ReachPriyadarsh

08-01-2019

Hi,

I am using the below query to perform a full-text site search in content and another dam location which has PDFs

group.1_group.path=/content/projectname

group.1_group.type=cq:Page

group.1_group.property=jcr:content/excludeInSearch

group.1_group.property.value=false

group.1_group.property.operation=exists

group.1_group.fulltext=testcontent

group.2_group.path=/content/dam/projectname/forms

group.2_group.type=dam:Asset

group.2_group.fulltext=saa

p.limit=-1

group.p.or=true

As per suggestions from daycare, we were requested to not use any custom lucene index and add included paths to the below default indices

/oak:index/cqPageLucene

/oak:index/damAssetLucene

The indices under /oak:index/cqPageLucene/aggregates/cq:PageContent seems to have only 3 levels (i.e include0 to include2).

Hence it is missing content that is in components below the third level in the hierarchy. Modifying/adding more levels creates issues with accessing the editable templates from the authoring mode.

1663230_pastedImage_75.png

Can anyone please suggest what would be the best approach to create the index for this search query?

Accepted Solutions (1)

Accepted Solutions (1)

Gaurav-Behl

MVP

12-02-2019

The solution was to use "queryPaths" in case you want to run your query only on specific paths and not on the entire repo when you have pre-configured "includedPaths" and "excludedPaths".

This is what worked -

queryPaths   Optional multi value property. Defaults to ‘/’List of paths for which the index can be used to perform queries. Refer to Path Includes/Excludes for more details

Jackrabbit Oak – Lucene Index

Answers (5)

Answers (5)

Gaurav-Behl

MVP

10-01-2019

It seems that you were already using the custom index reflected by reindexcount property. Could you share more details about the issue that you faced/are facing with it?

Is the issue that custom index is not getting picked up or is it about the performance of query(ies) or that relevant content is not getting picked up? The custom index could be further tweaked, if required.

/oak:index/cqPageLucene/aggregates/cq:PageContent is the master index used for as fallback for cq:PageContent in repo hence I wouldn't recommend to increase its levels.

I'm assuming that there are multiple reasons for using a custom index based on your index definition

-suggestions

-full text

-deep node structure

-path restrictions etc.

I would prefer to go towards using the custom index route(& fixing it, if required), rather than customizing master-shared index with specific use cases.

In addition, could you share the query explain plan json from the below link for the query you mentioned above?

http://localhost:4502/libs/granite/operations/content/diagnosistools/queryPerformance.html

ReachPriyadarsh

09-01-2019

Hi,

Below are the cqPageLucene and damAssetLucene indices

<?xml version="1.0" encoding="UTF-8"?>

<jcr:root xmlns:oak="http://jackrabbit.apache.org/oak/ns/1.0" xmlns:dam="http://www.day.com/dam/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal"

    jcr:mixinTypes="[rep:AccessControllable]"

    jcr:primaryType="nt:unstructured">

    <socialLucene/>

    <workflowDataLucene/>

    <slingeventJob/>

    <jcrLanguage/>

    <versionStoreIndex/>

    <repMembers/>

    <cqReportsLucene/>

    <commerceLucene/>

    <counter/>

    <jhasLucene/>

    <authorizables/>

    <enablementResourceName/>

    <externalPrincipalNames/>

    <cmLucene/>

    <cqProjectLucene/>

    <acPrincipalName/>

    <uuid/>

    <damAssetLucene

        jcr:primaryType="oak:QueryIndexDefinition"

        async="[async,nrt]"

        compatVersion="{Long}2"

        evaluatePathRestrictions="{Boolean}true"

        includedPaths="[/content/dam]"

        reindex="{Boolean}false"

        reindexCount="{Long}1"

        type="lucene">

        <aggregates jcr:primaryType="nt:unstructured">

            <dam:Asset jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content"/>

                <include1

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/metadata"/>

                <include2

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/metadata/*"/>

                <include3

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions"/>

                <include4

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions/original"/>

                <include5

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions/original/jcr:content"/>

                <include6

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/comments"/>

                <include7

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/comments/*"/>

                <include8

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/data/master"/>

                <include9

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/usages"/>

            </dam:Asset>

        </aggregates>

        <indexRules jcr:primaryType="nt:unstructured">

            <dam:Asset jcr:primaryType="nt:unstructured">

                <properties jcr:primaryType="nt:unstructured">

                    <cqTags

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/cq:tags"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <dcFormat

                        jcr:primaryType="nt:unstructured"

                        analyzed="{Boolean}true"

                        name="jcr:content/metadata/dc:format"

                        propertyIndex="{Boolean}true"/>

                    <damStatus

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:status"

                        propertyIndex="{Boolean}true"/>

                    <videoCodec

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/videoCodec"

                        propertyIndex="{Boolean}true"/>

                    <audioCodec

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/audioCodec"

                        propertyIndex="{Boolean}true"/>

                    <dcTitle

                        jcr:primaryType="nt:unstructured"

                        boost="{Double}2.0"

                        name="jcr:content/metadata/dc:title"

                        nodeScopeIndex="{Boolean}true"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <dcDescription

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dc:description"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <xmpMMInstanceId

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/xmpMM:InstanceID"

                        propertyIndex="{Boolean}true"/>

                    <xmpMMDocumentId

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/xmpMM:DocumentID"

                        propertyIndex="{Boolean}true"/>

                    <damSha1

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:sha1"

                        propertyIndex="{Boolean}true"/>

                    <hasValidMetadata

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/hasValidMetadata"

                        propertyIndex="{Boolean}true"

                        type="Boolean"/>

                    <refExpired

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/refExpired"

                        propertyIndex="{Boolean}true"

                        type="Boolean"/>

                    <videoBitrate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/videoBitrate"

                        propertyIndex="{Boolean}true"/>

                    <audioBitrate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/audioBitrate"

                        propertyIndex="{Boolean}true"/>

                    <usedBy

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/usages/usedBy"

                        propertyIndex="{Boolean}true"/>

                    <jcrLastModified

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/jcr:lastModified"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <expirationDate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/prism:expirationDate"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <onTime

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/onTime"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <offTime

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/offTime"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <damSize

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:size"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <averageRating

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/averageRating"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Double"/>

                    <tiffImageWidth

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/tiff:ImageWidth"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <tiffImageLength

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/tiff:ImageLength"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <score

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/usages/dam:score"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <predictedTags

                        jcr:primaryType="nt:unstructured"

                        isRegexp="{Boolean}true"

                        name="jcr:content/metadata/predictedTags/*/name"/>

                    <predictedTagsConfidence

                        jcr:primaryType="nt:unstructured"

                        isRegexp="{Boolean}true"

                        name="jcr:content/metadata/predictedTags/*/confidence"/>

                    <damSearchElevate

                        jcr:primaryType="nt:unstructured"

                        analyzed="{Boolean}true"

                        boost="{Double}100.0"

                        name="jcr:content/metadata/dam:search_promote"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"/>

                    <jcrTitle

                        jcr:primaryType="nt:unstructured"

                        boost="{Double}2.0"

                        name="jcr:content/jcr:title"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <jcrDescription

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/jcr:description"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <jcrCreated

                        jcr:primaryType="nt:unstructured"

                        name="jcr:created"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <cqLastReplicated

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/cq:lastReplicated"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <brandPortalReplicated

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/dam:portalReplicationDate"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                </properties>

            </dam:Asset>

        </indexRules>

    </damAssetLucene>

    <rep:policy/>

    <cqPayloadPath/>

    <nodetypeLucene/>

    <nodetype/>

    <ntBaseLucene/>

    <reference/>

    <principalName/>

    <cqTagLucene/>

    <lucene/>

    <repTokenIndex/>

    <externalId/>

    <authorizableId/>

    <cqPageLucene

        jcr:primaryType="oak:QueryIndexDefinition"

        async="[async,nrt]"

        compatVersion="{Long}2"

        evaluatePathRestrictions="{Boolean}true"

        excludedPaths="[/var,/etc/replication,/etc/workflow/instances,/jcr:system]"

        includedPaths="[/content/projectname]"

        reindex="{Boolean}false"

        reindexCount="{Long}1"

        type="lucene">

        <aggregates jcr:primaryType="nt:unstructured">

            <cq:Page jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content"

                    relativeNode="{Boolean}true"/>

            </cq:Page>

            <nt:file jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content"/>

            </nt:file>

            <cq:PageContent jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="*"/>

                <include1

                    jcr:primaryType="nt:unstructured"

                    path="*/*"/>

                <include2

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*"/>

                <include3

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*"/>

                <include4

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*/*"/>

                <include4

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*/*"/>

            </cq:PageContent>

        </aggregates>

        <indexRules jcr:primaryType="nt:unstructured">

            <cq:Page jcr:primaryType="nt:unstructured">

                <properties jcr:primaryType="nt:unstructured">

                    <cqLastModified

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/cq:lastModified"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <jcrTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/jcr:title"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <pageTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/pageTitle"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <navTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/navTitle"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <nodeName

                        jcr:primaryType="nt:unstructured"

                        name=":nodeName"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <cqLastRolledoutBy

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/cq:lastRolledoutBy"

                        propertyIndex="{Boolean}true"

                        type="String"/>

                    <location

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/location"

                        notNullCheckEnabled="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="String"/>

                </properties>

            </cq:Page>

        </indexRules>

    </cqPageLucene>

</jcr:root>

There was another approach I tried as below which was combining both the indices into a common custom index and providing the included paths there. Is this a correct way to set up the index?

<?xml version="1.0" encoding="UTF-8"?>

<jcr:root xmlns:oak="http://jackrabbit.apache.org/oak/ns/1.0" xmlns:dam="http://www.day.com/dam/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal"

    jcr:mixinTypes="[rep:AccessControllable]"

    jcr:primaryType="nt:unstructured">

    <socialLucene/>

    <workflowDataLucene/>

    <slingeventJob/>

    <jcrLanguage/>

    <versionStoreIndex/>

    <repMembers/>

    <cqReportsLucene/>

    <commerceLucene/>

    <counter/>

    <jhasLucene

        jcr:primaryType="oak:QueryIndexDefinition"

        async="async"

        compatVersion="{Long}2"

        evaluatePathRestrictions="{Boolean}true"

        excludedPaths="[/var,/etc,/jcr:system,/libs,/apps]"

        includedPaths="[/content/projectname,/content/dam/projectname]"

        reindex="{Boolean}false"

        reindexCount="{Long}7"

        type="lucene">

        <aggregates jcr:primaryType="nt:unstructured">

            <dam:Asset jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content"/>

                <include1

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/metadata"/>

                <include2

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/metadata/*"/>

                <include3

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions"/>

                <include4

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions/original"/>

                <include5

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/renditions/original/jcr:content"/>

                <include6

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/comments"/>

                <include7

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/comments/*"/>

                <include8

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content/usages"/>

            </dam:Asset>

            <cq:Page jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="jcr:content"

                    relativeNode="{Boolean}true"/>

            </cq:Page>

            <cq:PageContent jcr:primaryType="nt:unstructured">

                <include0

                    jcr:primaryType="nt:unstructured"

                    path="*"

                    relativeNode="{Boolean}false"/>

                <include1

                    jcr:primaryType="nt:unstructured"

                    path="*/*"

                    relativeNode="{Boolean}false"/>

                <include2

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*"

                    relativeNode="{Boolean}false"/>

                <include3

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*"

                    relativeNode="{Boolean}false"/>

                <include4

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*/*"

                    relativeNode="{Boolean}false"/>

                <include5

                    jcr:primaryType="nt:unstructured"

                    path="*/*/*/*/*/*"

                    relativeNode="{Boolean}false"/>

            </cq:PageContent>

        </aggregates>

        <indexRules jcr:primaryType="nt:unstructured">

            <cq:Page jcr:primaryType="nt:unstructured">

                <properties jcr:primaryType="nt:unstructured">

                    <cqLastModified

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/cq:lastModified"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <jcrTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/jcr:title"

                        nodeScopeIndex="{Boolean}true"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <pageTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/pageTitle"

                        nodeScopeIndex="{Boolean}true"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <navTitle

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/navTitle"

                        nodeScopeIndex="{Boolean}true"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <nodeName

                        jcr:primaryType="nt:unstructured"

                        name=":nodeName"

                        nodeScopeIndex="{Boolean}true"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="String"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <cqLastRolledoutBy

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/cq:lastRolledoutBy"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="String"/>

                    <excludeinsearch

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/excludeInSearch"

                        nodeScopeIndex="{Boolean}true"

                        nullCheckEnabled="{Boolean}true"

                        ordered="{Boolean}false"

                        propertyIndex="{Boolean}true"

                        type="Boolean"/>

                </properties>

            </cq:Page>

            <dam:Asset jcr:primaryType="nt:unstructured">

                <properties jcr:primaryType="nt:unstructured">

                    <cqTags

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/cq:tags"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <dcFormat

                        jcr:primaryType="nt:unstructured"

                        analyzed="{Boolean}true"

                        name="jcr:content/metadata/dc:format"

                        propertyIndex="{Boolean}true"/>

                    <damStatus

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:status"

                        propertyIndex="{Boolean}true"/>

                    <videoCodec

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/videoCodec"

                        propertyIndex="{Boolean}true"/>

                    <audioCodec

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/audioCodec"

                        propertyIndex="{Boolean}true"/>

                    <dcTitle

                        jcr:primaryType="nt:unstructured"

                        boost="{Double}2.0"

                        name="jcr:content/metadata/dc:title"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <dcDescription

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dc:description"

                        nodeScopeIndex="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        useInSpellcheck="{Boolean}true"

                        useInSuggest="{Boolean}true"/>

                    <xmpMMInstanceId

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/xmpMM:InstanceID"

                        propertyIndex="{Boolean}true"/>

                    <xmpMMDocumentId

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/xmpMM:DocumentID"

                        propertyIndex="{Boolean}true"/>

                    <damSha1

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:sha1"

                        propertyIndex="{Boolean}true"/>

                    <hasValidMetadata

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/hasValidMetadata"

                        propertyIndex="{Boolean}true"

                        type="Boolean"/>

                    <videoBitrate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/videoBitrate"

                        propertyIndex="{Boolean}true"/>

                    <audioBitRate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/audioBitrate"

                        propertyIndex="{Boolean}true"/>

                    <usedBy

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/usages/usedBy"

                        propertyIndex="{Boolean}true"/>

                    <jcrLastModified

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/jcr:lastModified"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <expirationDate

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/prism:expirationDate"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <onTime

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/onTime"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <offTime

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/offTime"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Date"/>

                    <damSize

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/dam:size"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <averageRating

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/averageRating"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Double"/>

                    <tiffImageWidth

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/tiff:ImageWidth"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <tiffImageLength

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/metadata/tiff:ImageLength"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <score

                        jcr:primaryType="nt:unstructured"

                        name="jcr:content/usages/dam:score"

                        ordered="{Boolean}true"

                        propertyIndex="{Boolean}true"

                        type="Long"/>

                    <damRelativePath

                        jcr:primaryType="nt:unstructured"

                        analyzed="{Boolean}true"

                        name="jcr:content/dam:relativePath"

                        propertyIndex="{Boolean}true"/>

                </properties>

            </dam:Asset>

        </indexRules>

    </jhasLucene>

    <authorizables/>

    <enablementResourceName/>

    <externalPrincipalNames/>

    <cmLucene/>

    <cqProjectLucene/>

    <acPrincipalName/>

    <uuid/>

    <damAssetLucene/>

    <rep:policy/>

    <cqPayloadPath/>

    <nodetypeLucene/>

    <nodetype/>

    <ntBaseLucene/>

    <reference/>

    <principalName/>

    <cqTagLucene/>

    <lucene/>

    <repTokenIndex/>

    <externalId/>

    <authorizableId/>

    <cqPageLucene/>

</jcr:root>

Gaurav-Behl

MVP

09-01-2019

could you share the index definitions or pagelucene and damassetlucene? In addition to that, could you share the explain plan?

Do you see that the results are not picked up from nodes greater than level 3? Could you test that on we-retail?

adding more levels shouldn't be a problem, I'm not sure how is accessing templates related to index levels.

What version of AEM/Oak do you use?