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

Ard Schrijvers commented on JCR-4057:
-------------------------------------

Hey [~breun], 

the alternative approach requires quite some heavy programming and also here 
and there hooking into the different Jackrabbit Query impls (certainly the 
hierarchical constraint queries are quite complex). Also it requires that your 
authorization model can be mapped to a Lucene query, and it might even imply 
you need to hook into the indexing itself. All in all months of work (with the 
end result that you get authorized hits back from Lucene and you don't need to 
do a check for access any more). Realistically however this means you need to 
heavily invest in Jackrabbit yourself. I think (assume) this is not realistic 
for your use case. 

If you are ok, I'll now close this issue as won't fix for the reasons I 
mentioned

Regards Ard

> Improve performance of skipping offset nodes for Lucene queries
> ---------------------------------------------------------------
>
>                 Key: JCR-4057
>                 URL: https://issues.apache.org/jira/browse/JCR-4057
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 2.10.4
>            Reporter: Nils Breunese
>              Labels: performance
>         Attachments: JCR-4057-test.patch, JCR-4057.patch
>
>
> When doing Lucene-based queries with large offset values like 12000 I see 
> pretty bad performance in our system. I have already enabled the 
> {{sizeEstimate}} option to improve performance, but still see queries taking 
> 6 to 66 seconds.
> I have identified the call to {{collectScoreNodes}} for offset nodes in 
> {{org.apache.jackrabbit.core.query.lucene.QueryResultImpl#getResults}} to be 
> the cause of this. The {{collectScoreNodes}} method builds an anonymous 
> {{ArrayList<ScoreNode[]>}} for the offset nodes, which is not used after 
> building it, so it uses memory for nothing, and it also does access checks 
> for these nodes which are not returned.
> I have attached a patch to Jackrabbit 2.10.4 which just calls {{skip}} on the 
> {{MultiColumnQueryHits result}} and using this patch our query times seem to 
> stay under 2 seconds.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to