package zh.solr.se.indexer.solrproxy;
import java.util.HashMap;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.util.NamedList;
public class RemoteSolrProxy extends CommonsHttpSolrServer {
private String hostName;
private String coreName;
public RemoteSolrProxy(String hostName, String coreName) throws Exception {
super("http://" + hostName + ":8983/solr/" + coreName);
this.hostName = hostName;
this.coreName = coreName;
}
public SolrDocumentList search(Map<String, String> paramMap) throws Exception {
assert (paramMap != null && paramMap.size() > 0);
SolrQuery query = constructQuery(paramMap);
SolrResponse solrResp = query(query);
if (solrResp == null)
return null;
NamedList<Object> responseFeilds = solrResp.getResponse();
if (responseFeilds == null)
return null;
SolrDocumentList docList = (SolrDocumentList)responseFeilds.get(SolrConstants.SOLR_NAME_RESPONSE_RESULT);
return docList;
}
public String getHostName() {
return hostName;
}
public void setHostName(String hostName) {
this.hostName = hostName;
}
public String getCoreName() {
return coreName;
}
public void setCoreName(String coreName) {
this.coreName = coreName;
}
private SolrQuery constructQuery(Map<String, String> paramMap) {
SolrQuery query = new SolrQuery();
for (String paramName : paramMap.keySet()) {
query.setParam(paramName, paramMap.get(paramName));
}
return query;
}
public static void main(String[] args) {
}
}