jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chetan Mehrotra (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OAK-3591) Lucene index with 'analyzed=true' sometimes used by mistake
Date Mon, 16 Nov 2015 07:26:11 GMT

    [ https://issues.apache.org/jira/browse/OAK-3591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15006298#comment-15006298

Chetan Mehrotra commented on OAK-3591:

Fixed this with 1714520 in trunk

The issue was that {{fulltextEnabled}} was covering 2 cases either some property is having
analyzed=true or nodeScopeIndex= true. IndexPlanner was relying on {{fulltextEnabled}} to
decide if it should answer a fulltext query. Here it did not considered the case that fulltext
query can be nodeScoped and there might be no nodeScoped property

As a fix now a new property {{nodeFullTextIndexed}} is introduced in {{IndexingRule}}. This
would be true only if a fulltext field for node would be created due to either aggregation
or some property having nodeScopeIndex=true. {{indexPlanner}} would now use that to determine
if it can handle query like _contains(., 'foo')_. So if only {{analyzed}} is true then such
query would not be handled.

A similar case was coming when indexRule is for nt:base and some property had analyzed=true.
In such a case {{indexesAllNodesOfMatchingType}} was being calculated as true as it relied
on {{fulltextEnabled}} to determine if all node matching given rule would be indexed or not.
And in such a case planner would think it can answer the query  like _/jcr:root//element(*,
nt:file)_ as it think that all nodes of type nt:file would be indexed given nt:file > nt:base.
Now  {{indexesAllNodesOfMatchingType}} is determined on basis of {{nodeFullTextIndexed}} as
in only that case all nodes matching given rule would be indexed irrespective if any specific
property is present or not

With this change also modified to {{PropertyDefinition}} to treat all config to be false if
{{index}} is false

> Lucene index with 'analyzed=true' sometimes used by mistake
> -----------------------------------------------------------
>                 Key: OAK-3591
>                 URL: https://issues.apache.org/jira/browse/OAK-3591
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: lucene, query
>            Reporter: Thomas Mueller
>            Assignee: Chetan Mehrotra
>             Fix For: 1.3.11
> A Lucene index with a property that is configured as "analyzed = true" is sometimes used
by mistake. Example:
> {noformat}
> oak:index/testLuceneIndex (oak:QueryIndexDefinition)
>   compatVersion: 2
>   type: lucene
>   async: "async"
>   indexRules (nt:unstructured)
>     nt:base (nt:unstructured)
>       properties (nt:unstructured)
>         xyz (nt:unstructured)
>           propertyIndex: true,
>           analyzed: true,
>           name: xyz
> query:
> /jcr:root/content//*[jcr:contains(., '1234')]
> {noformat}
> The index is used, but the result does not contain nodes with properties abc = '1234'.

This message was sent by Atlassian JIRA

View raw message