On 10/31/2012 10:06 PM, Jegannathan Mehalingam wrote:
- I tried using HttpSolrServer, but had some problems and some news groups mentioned that it is buggy and I should be using CommonsHttpSolrServer. So, I am using CommonsHttpSolrServer. But both approaches does not work. - I have tried using SOLR 4.0 as well as 3.6.1. I get errors in both cases. - I started SOLR server from C:\apche_solr\apache-solr-4.0.0\example using the command "java -Dsolr.solr.home="./example-DIH/solr/" -jar start.jar 1>logs/dih.log 2>&1"

Here is my code which uses CommonsHttpSolrServer:

String url = "http://localhost:8983/solr/#/solr/update/";;

This right here is your problem. The URL you have given here is a URL for the 4.0 admin interface. Chances are what you really want is this, replacing CORENAME with the actual name of your core:

String url = "http://localhost:8983/solr/CORENAME/";;

try {

  CommonsHttpSolrServer server = new CommonsHttpSolrServer( url );
  server.setSoTimeout(1000);  // socket read timeout
server.setConnectionTimeout(100);
server.setDefaultMaxConnectionsPerHost(100);
server.setMaxTotalConnections(100);
server.setFollowRedirects(false);  // defaults to false
server.setAllowCompression(false);
  server.setMaxRetries(1); // defaults to 0.  > 1 not recommended.
server.setParser(new XMLResponseParser()); // binary parser is used by default

Go with HttpSolrServer. There are problems with it on SolrJ 3.6.0, but I think they are fixed in 3.6.1. CommonsHttpSolrServer doesn't exist at all in SolrJ 4.0.

XMLResponseParser is *ONLY* required if your Solr and SolrJ versions are wildly different. The javabin format changed version number between 1.4.1 and 3.1.0, and the two versions are completely incompatible. If both ends are on 3.1 or later, javabin is fine. XML is slightly slower than javabin.

Most of the SolrJ options you have set here are unnecessary. Unless you run into an actual problem with the low level TCP/HTTP settings, the only ones you should initially have are setConnectionTimeout and setMaxRetries. You've configured a connection timeout of 100 milliseconds. In perfect conditions on a LAN, this is enough, but if conditions are less than ideal, it may not be. I personally use a value of 15000, but you may want to go with 5000. Your setMaxRetries looks appropriate, and is the value that I use. I would lose all the other options.

Thanks,
Shawn

Reply via email to