Request/response handling
Let us understand what a request and response stands for and get a brief idea about the components handling these requests.
- Request: As the name suggests, when you search for a keyword, an action is triggered (in a form of query) to Solr to take care of the action (in this case, find out the search keywords) and display the results relevant to it. The action which is triggered is called a request.
- Response: Response is nothing but what is being displayed on your screen based on the search keywords and other specifications you have stated in your search query.
- RequestHandler: It is a component which is responsible for answering your requests and is installed and configured in the
solrconfig.xml
file. Moreover, it has a specific name and class assigned to handle the requests efficiently. If the name starts with a/
, you will be able to reach the requesthandler by calling the appropriate path.For instance, let us consider an example of the updatehandler which is configured like this:
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
In the above example, the handler can be reached by calling
<solr_url>/update
. You may visit http://lucene.apache.org/solr/4_3_1/solr-core/org/apache/solr/request/SolrRequestHandler.html to explore further the list ofRequesetHandlers
.Request and response handling are the primary steps you should be aware of in order to play around with various optimal methods of searching data. We will cover how to efficiently handle request and responses in this section.
Before we start with how to handle a request or response, let's walk through a few of the important directories which we will be using throughout the chapter along with what they are used to store. They are:
Conf
: It is one of the mandatory directories in Solr which contains configuration related files likesolrconfig.xml
andschema.xml
. You may also place your other configuration files here in this directory.Data
: This is the directory where Solr keeps your index by default and is used by replication scripts. If you are not happy with this default location, you have enough flexibility to override it atsolrconfig.xml
. Don't panic! If the stated custom directory doesn't exist, Solr will create it for you.Lib
: It is not mandatory to have this directory. JARS resides here which is located by Solr to resolve any "plugins" which have been defined in yoursolrconfig.xml
orschema.xml
. For example, Analyzers, Requesthandlers, and so on come into the picture.Bin
: Replication scripts reside here in this directory and it is up to you whether to have and/or use this directory.
Requests are handled using multiple handlers and/or multiple instances of the same SolrRequestHandler
class. How do you wish to use the handler and instances of the handler class is differentiated based on the custom configurations, and are registered with SolrCore
. An alternate way to register your SolrRequestHandler
with the core is through the solrconfig.xml
file.
For instance:
<requestHandler name="/foo" class="solr.CustomRequestHandler" /> <!-- initialization args may optionally be defined here --> <lst name="defaults"> <int name="rows">10</int> <str name="fl">*</str> <str name="version">2.1</str> </lst> </requestHandler>
The easiest way to implement SolrRequestHandler
is to extend the RequestHandlerBase
class.