Class LTRThreadModule

java.lang.Object
org.apache.solr.ltr.LTRThreadModule
All Implemented Interfaces:
NamedListInitializedPlugin

public final class LTRThreadModule extends Object implements NamedListInitializedPlugin
The LTRThreadModule is optionally used by the LTRQParserPlugin and LTRFeatureLoggerTransformerFactory classes to parallelize the creation of Feature.FeatureWeight objects.

Example configuration:

 <queryParser name="ltr" class="org.apache.solr.ltr.search.LTRQParserPlugin">
   <int name="threadModule.totalPoolThreads">10</int>
   <int name="threadModule.numThreadsPerRequest">5</int>
 </queryParser>

 <transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory">
   <int name="threadModule.totalPoolThreads">10</int>
   <int name="threadModule.numThreadsPerRequest">5</int>
 </transformer>
 
If an individual solr instance is expected to receive no more than one query at a time, it is best to set totalPoolThreads and numThreadsPerRequest to the same value.

If multiple queries need to be serviced simultaneously then totalPoolThreads and numThreadsPerRequest can be adjusted based on the expected response times.

If the value of numThreadsPerRequest is higher, the response time for a single query will be improved up to a point. If multiple queries are serviced simultaneously, the value of totalPoolThreads imposes a contention between the queries if (totalPoolThreads < numThreadsPerRequest * total parallel queries).

  • Constructor Details

    • LTRThreadModule

      public LTRThreadModule()
  • Method Details

    • getInstance

      public static LTRThreadModule getInstance(org.apache.solr.common.util.NamedList<?> args)
    • init

      public void init(org.apache.solr.common.util.NamedList<?> args)
      Specified by:
      init in interface NamedListInitializedPlugin
    • setTotalPoolThreads

      public void setTotalPoolThreads(int totalPoolThreads)
    • setNumThreadsPerRequest

      public void setNumThreadsPerRequest(int numThreadsPerRequest)
    • createQuerySemaphore

      public Semaphore createQuerySemaphore()
    • acquireLTRSemaphore

      public void acquireLTRSemaphore() throws InterruptedException
      Throws:
      InterruptedException
    • releaseLTRSemaphore

      public void releaseLTRSemaphore() throws InterruptedException
      Throws:
      InterruptedException
    • execute

      public void execute(Runnable command)
    • setExecutor

      public void setExecutor(ExecutorService sharedExecutor)