omit xml parsing when using the embedded solr server

This commit is contained in:
orbiter 2012-08-24 12:18:30 +02:00
parent 787e1c6836
commit 7cd302de3e
3 changed files with 39 additions and 22 deletions

View File

@ -27,7 +27,9 @@ import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrException;
@ -155,6 +157,16 @@ public class EmbeddedSolrConnector extends SolrServerConnector implements SolrCo
return rsp;
}
public QueryResponse query(SolrParams params) throws IOException {
try {
return server.query(params);
} catch (SolrServerException e) {
throw new IOException(e);
} catch (Throwable e) {
throw new IOException("Error executing query", e);
}
}
public static void main(String[] args) {
File solr_config = new File("defaults/solr");
File storage = new File("DATA/INDEX/webportal/SEGMENTS/text/solr/");

View File

@ -50,7 +50,14 @@ import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HttpContext;
import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
public class RemoteSolrConnector extends SolrServerConnector implements SolrConnector {
@ -148,6 +155,23 @@ public class RemoteSolrConnector extends SolrServerConnector implements SolrConn
this.terminate();
}
public QueryResponse query(SolrParams params) throws IOException {
try {
QueryRequest request = new QueryRequest(params);
ResponseParser responseParser = new XMLResponseParser();
request.setResponseParser(responseParser);
long t = System.currentTimeMillis();
NamedList<Object> result = server.request(request);
QueryResponse response = new QueryResponse(result, server);
response.setElapsedTime(System.currentTimeMillis() - t);
return response;
} catch (SolrServerException e) {
throw new IOException(e);
} catch (Throwable e) {
throw new IOException("Error executing query", e);
}
}
public String getAdminInterface() {
final InetAddress localhostExternAddress = Domains.myPublicLocalIP();
final String localhostExtern = localhostExternAddress == null ? "127.0.0.1" : localhostExternAddress.getHostAddress();

View File

@ -28,22 +28,18 @@ import java.util.List;
import net.yacy.kelondro.logging.Log;
import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
public class SolrServerConnector extends AbstractSolrConnector implements SolrConnector {
public abstract class SolrServerConnector extends AbstractSolrConnector implements SolrConnector {
protected SolrServer server;
protected int commitWithinMs; // max time (in ms) before a commit will happen
@ -211,23 +207,8 @@ public class SolrServerConnector extends AbstractSolrConnector implements SolrCo
final SolrDocumentList docs = rsp.getResults();
return docs;
}
public QueryResponse query(SolrParams params) throws IOException {
try {
QueryRequest request = new QueryRequest(params);
ResponseParser responseParser = new XMLResponseParser();
request.setResponseParser(responseParser);
long t = System.currentTimeMillis();
NamedList<Object> result = server.request(request);
QueryResponse response = new QueryResponse(result, server);
response.setElapsedTime(System.currentTimeMillis() - t);
return response;
} catch (SolrServerException e) {
throw new IOException(e);
} catch (Throwable e) {
throw new IOException("Error executing query", e);
}
}
abstract public QueryResponse query(SolrParams params) throws IOException;
private final char[] queryIDTemplate = "id:\" \"".toCharArray();