jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ard Schrijvers (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-1064) Optimize queries that check for the existence of a property
Date Tue, 28 Aug 2007 13:05:30 GMT

    [ https://issues.apache.org/jira/browse/JCR-1064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523228

Ard Schrijvers commented on JCR-1064:

Implemented the new indexing format again. There is a subtle difficulty though:

When I have one sysIndex and 2 workspace indices in format style like:

sysIndex = old
ws1Index = old
ws2Index = old

now, only deleting the sysIndex, will generate a sysIndex in new format style in index.createInitialIndex().

Since ws1Index and ws2Index  are old, the parentQueryHandler should be set to old index style
again. This is implemented. 

Now, when you would have again 

sysIndex = old
ws1Index = old
ws2Index = old

and remove sysIndex  *and*  ws1Index, then  at doInit() we would get 

sysIndex = new --> old  (but changed to old when ws2Index is initialised)
ws1Index = new
ws2Index = old

but, when querying ws1Index, this might give problems, because sysIndex is reverted to "old"
when ws2Index was initialized. To solve this, at getIndexFormatVersion() always a check is
done wether parent handler and current index format are the same. If not, default back to
old style.

This implies, that when updating jackrabbit version, you will *only* get the new indexing
format style if and only if you re-index all the existing indices you have so far. 

Hope my explanation is clear! I'll prepare the patch

> Optimize queries that check for the existence of a property
> -----------------------------------------------------------
>                 Key: JCR-1064
>                 URL: https://issues.apache.org/jira/browse/JCR-1064
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: indexing
>    Affects Versions: 1.3.1
>            Reporter: Ard Schrijvers
>            Priority: Minor
>             Fix For: 1.4
>         Attachments: JCR-1064-2.patch, JCR-1064-2.patch, JCR-1064-2.patch, JCR-1064-DEPR.patch
> //*[@mytext] is transformed into the org.apache.jackrabbit.core.query.lucene.MatchAllQuery,
that through the MatchAllWeight uses the MatchAllScorer.  The calculateDocFilter() in MatchAllScorer
 does not scale and becomes slow for growing number of nodes. 
> Solution: lucene documents will get a new Field:
> public static final String PROPERTIES_SET = "_:PROPERTIES_SET".intern();
> that holds the available properties of this document. 
> NOTE: Lucene indices build without this performance improvement should still work and
fall back to the original implementation

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message