Httpsolrserver thread Safety, if you use the following constructor, you must reuse the same instance for all requests. If the instance is created in the run,
It may cause a connection leak. The recommended practice is to maintain a static instance of Httpsolrserver for each SOLR service URL, and all requests share this instance.
Refer to https://issues.apache.org/jira/browse/SOLR-861 for more details.
1. Create a configuration file solr-config.properties:
cores=ac,jdbase_url=http://127.0.0.A:13131/SOLR
2. Create a Configuration object Configutil.java read the configuration in the properties file:
Package Com.li.util; Import Java.util.ResourceBundle; Public class configutil { privatestatic resourcebundle Resoucebundle = Resourcebundle.getbundle (Config.search); Public Static string getString (String key) { return resoucebundle.getstring (key);} }
3. Configure the Property object class Config.java:
PackageCom.li.util; Public classConfig {//Common Public Static FinalString COMMA = ","; Public Static FinalString underline = "_"; Public Static FinalString Singe_blank = ""; Public Static FinalString SLASH = "/"; Public Static FinalString COLON = ":"; Public Static FinalString base_url = "Base_url"; Public Static FinalString cores = "Cores"; //configuration file Public Static FinalString SEARCH = "Solr-config"; }
4. Static Factory method Solrserverfactory.java:
PackageCOM.LI.SOLRJ;ImportJava.util.HashMap;ImportJava.util.Map;ImportOrg.apache.solr.client.solrj.impl.HttpSolrServer;ImportCom.li.util.Config;ImportCom.li.util.ConfigUtil;/*** Create a Httpsolrserver static Factory method, * A singleton pattern for creating multiple collections *@authorAdministrator **/ Public classSolrserverfactory { Public StaticMap<string,httpsolrserver>servers; Static{Servers=NewHashmap<string,httpsolrserver>(); //static loading of all Solrserverstring[] Cores =configutil.getstring (config.cores). Split (Config.comma); String Base_url=configutil.getstring (Config.base_url); for(String core:cores) {string URL; if(Base_url.endswith (config.slash)) {URL= Base_url +Core; }Else{URL= base_url+config.slash+Core; } httpsolrserver Server=Newhttpsolrserver (URL); Servers.put (core, server); } } Publichttpsolrserver newinstance (String collection) {if(Servers.containskey (collection))returnServers.get (collection); String Base_url=configutil.getstring (Config.base_url); if(Base_url.endswith (Config.slash)) Base_url= base_url+collection; ElseBase_url= Base_url + Config.slash +collection; returnServers.put (Collection,NewHttpsolrserver (Base_url)); }}
httpsolrserver-using a static factory method to create a Httpsolrserver single instance