jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christoph Kiehl (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-989) Modify LazyQueryResultImpl to allow resultFetchSize to be set programmatically
Date Fri, 29 Jun 2007 21:42:05 GMT

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

Christoph Kiehl commented on JCR-989:

To be honest I don't like this generic setOption() method. Methods like that tend to transport
some configuration options that are not obvious to the user but I have to confess that ((LazyQueryResultImpl)
result).setResultFetchSize(10) isn't that obvious either ;)

If we provide such a  setOption() method I would at least like to provide some constants like

QueryImpl.setOption(LazyQueryResultImpl.RESULT_PREFETCH_SIZE, 123)

which doesn't really make things better. I think the main problem is that resultPrefetchSize
is not only lucene specific but also specific to LazyQueryResultImpl.

I just got another idea. What do you think of some Timer that checks LazyScoreNodeIterator
for activeness and closes the reader if there hasn't been any activity on the iterator for
the last say 1 or 2 seconds? If the Iterator is used again the query can still be executed
again and the current mechanism could be used. I think in most cases you iterate through the
results quite quickly so the reader will only be closed when you are finished. This would
eleminate the need to set resultPrefetchSize and would give better performance to most users
without configuring anything while taking up a bit more resources.

> Modify LazyQueryResultImpl to allow resultFetchSize to be set programmatically
> ------------------------------------------------------------------------------
>                 Key: JCR-989
>                 URL: https://issues.apache.org/jira/browse/JCR-989
>             Project: Jackrabbit
>          Issue Type: New Feature
>          Components: query
>    Affects Versions: 1.3
>            Reporter: Christoph Kiehl
>            Priority: Minor
>         Attachments: LazyQueryResultImpl.patch
> In our application we have a search which only shows part of a query result. We always
know which part of the result needs to be shown. This means we know in advance how many results
need to be fetched. I would like to be able to programmatically set resultFetchSize to minimize
the number of loaded lucene docs and therefore improve the performance.
> I know it is already possible to the set the resultFetchSize via the index configuration,
but this number is fixed and doesn't work well in environments where you use paging for your
results because if you set this number too low the query will be executed multiple times and
if you set it too high too many lucene docs are loaded.

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

View raw message