[ 
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
>
>
> //[EMAIL PROTECTED] 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.

Reply via email to