[ https://issues.apache.org/jira/browse/SOLR-16693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17725511#comment-17725511 ]
Chris M. Hostetter commented on SOLR-16693: ------------------------------------------- I don't fully understand all the complexity here of what changes were made in lucene, but "last resort" strawman proposal that occurs to me is: * {{SolrIndexSearcher}} init's & maintain a {{private final ExitableDirectoryReader exitableDirReader}} (independent of the existing {{DirectoryReader} variable * {{SolrIndexSearcher.getIndexReader()}} should be changed to do something like..{code} return SolrQueryTimeoutImpl.getInstance().isTimeoutEnabled() ? exitableDirReader : reader {code} > Use TimeLimitingBulkScorer; stop using ExitableDirectoryReader > -------------------------------------------------------------- > > Key: SOLR-16693 > URL: https://issues.apache.org/jira/browse/SOLR-16693 > Project: Solr > Issue Type: Improvement > Affects Versions: 9.2 > Reporter: David Smiley > Assignee: David Smiley > Priority: Blocker > Fix For: 9.3 > > Time Spent: 1h 40m > Remaining Estimate: 0h > > While reviewing Lucene 9.5 changes coming into Solr, I noticed some changes > relating to the ability to specify timeAllowed in Solr on a search query. > Solr uses both ExitableDirectoryReader and TimeLimitingCollector from Lucene > for this (complementary to each other). Unfortunately, changes in Lucene > will make the cost of ExitableDirectoryReader wrapping happen for all queries > into Solr, even those not using timeAllowed. Options to keep EDR aren't good > -- fork it basically. Anecdotally, I think I've heard the overhead is not > trivial and my intuition thinks likewise. Meanwhile, Lucene 9.3 added a new > TimeLimitingBulkScorer which even gets first class integration into > IndexSearcher which has a timeout. It's been incrementally improved, and I > really like its approach, probable performance, and simplicity. It should be > straightforward to integrate this into SolrIndexSearcher and also only do so > for queries specifying timeAllowed. I'm not sure TimeLimitingCollector > offers much value to using TLBS other than additional precision on > timeAllowed at some cost to unselective queries. > I think doing this should block Solr 9.2 using Lucene 9.5. Alternatively, > someone might benchmark the state of things and see that things aren't so bad > as they may seem. But that takes work too. > [1] QueryTimeout.isTimeoutEnabled is gone: > https://github.com/apache/lucene/pull/11954 > [2] TimeLimitingBulkScorer in LUCENE-10151 > https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/search/TimeLimitingBulkScorer.java -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org