[ 
https://issues.apache.org/jira/browse/LUCENE-997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12527264
 ] 

Sean Timm commented on LUCENE-997:
----------------------------------

Here are some additional details on the changes.

New files:
TimeLimitedCollector.java

    Extends HitCollector and detects timeouts resulting in a 
TimeLimitedCollector.TimeExceeded exception being thrown.

TimerThread.java

    TimerThread provides a pseudo-clock service to all searching threads, so 
that they can count elapsed time with less overhead than repeatedly calling 
System.currentTimeMillis.  A single thread should be created to be used for all 
searches.

Modified Files:
Hits.java

    Added partial result flag.

IndexSearcher.java

    Catches TimeLimitedCollector.TimeExceeded, sets partial results flag on 
TopDocs and estimates the total hit count (if we hadn't timed out partway 
through).  Returns TopDocs with partial results.

Searcher.java

    Added methods to set and get the timeout parameters.  This implementation 
decision has the limitation of only permitting a single timeout value per 
Searcher instance (of which there is usually only one).  However, this greatly 
minimizes the number of search methods that would need to be added.  In 
practice, I have not needed the functionality to change the timeout settings on 
a per query basis.

TopFieldDocCollector.java

    Uses TimeLimitedCollector functionality.

TopDocCollector.java

    Uses TimeLimitedCollector functionality and exposes it to child class 
TopFieldDocCollector.

TopDocs.java

    Added partial results flag.  Note, TopFieldDocs extends this class and 
inherits the new functionality.

> Add search timeout support to Lucene
> ------------------------------------
>
>                 Key: LUCENE-997
>                 URL: https://issues.apache.org/jira/browse/LUCENE-997
>             Project: Lucene - Java
>          Issue Type: New Feature
>            Reporter: Sean Timm
>            Priority: Minor
>         Attachments: LuceneTimeoutTest.java, timeout.patch
>
>
> This patch is based on Nutch-308. 
> This patch adds support for a maximum search time limit. After this time is 
> exceeded, the search thread is stopped, partial results (if any) are returned 
> and the total number of results is estimated.
> This patch tries to minimize the overhead related to time-keeping by using a 
> version of safe unsynchronized timer.
> This was also discussed in an e-mail thread.
> http://www.nabble.com/search-timeout-tf3410206.html#a9501029

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to