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

Ard Schrijvers commented on JCR-1064:
-------------------------------------

AFAICS, the matchAllScorer won't be needed anymore with the new index format. 
Therefor, I won't add the changes to matchAllScorer that I had, because it 
implies that it scorer needs to know the format. For those interested, the 
improvement was like:

        if(newFormat){
                TermDocs docs = reader.termDocs(new 
Term(FieldNames.PROPERTIES_SET,field));
                while (docs.next()) {
                docFilter.set(docs.doc());
            }
                docs.close();
                
        } else {
                String namedValue = FieldNames.createNamedValue(field, "");
                TermEnum terms = reader.terms(new Term(FieldNames.PROPERTIES, 
namedValue));
                try {
                    TermDocs docs = reader.termDocs();
                    try {
                        while (terms.term() != null
                                && terms.term().field() == FieldNames.PROPERTIES
                                && terms.term().text().startsWith(namedValue)) {
                            docs.seek(terms);
                            while (docs.next()) {
                                docFilter.set(docs.doc());
                            }
                            terms.next();
                        }
                    } finally {
                        docs.close();
                    }
                } finally {
                    terms.close();
                }
        }

> 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
>
>
> //[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