参考:
http://wiki.apache.org/solr/Solrj
lib-jars:solr-4.9.0/dist/solr-solrj-4.9.0.jar
solr-4.9.0/dist/solrj-lib/*.Jar
下载commons-logging-1.2.jar
客户端代码调用
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
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.SolrInputDocument;
public class SolrTest {
private static SolrClient solrClient = SolrClient.getInstance();
private static String FIELD_ID = "id";
private static String FIELD_NAME = "name";
private static String FIELD_PRICE = "price";
public static void index() {
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField(FIELD_ID, "1000", 1.0f);
doc1.addField(FIELD_NAME, "doc1", 1.0f);
doc1.addField(FIELD_PRICE, 10 );
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("id", "1001", 1.0f);
doc2.addField("name", "doc2", 1.0f);
doc2.addField( "price", 20 );
Collection docs = new ArrayList();
docs.add(doc1);
docs.add(doc2);
try {
solrClient.addDocs(docs);
solrClient.commit();
} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void query() {
SolrQuery query = new SolrQuery();
query.setQuery( "*:*" );
//query.addSortField( "price", SolrQuery.ORDER.asc );
try {
QueryResponse rsp = solrClient.query(query);
SolrDocumentList docs = rsp.getResults();
int cnt = docs.size();
System.out.println("docs: " + cnt);
for (int i = 0; i < cnt; i++) {
SolrDocument doc = docs.get(i);
System.out.println("");
System.out.println(doc.getFieldValue(FIELD_ID));
System.out.println(doc.getFieldValue(FIELD_NAME));
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
String collection = "core0";
String url = "http://10.101.1.xxx:8080/solr/" + collection;
solrClient.init(url);
//index();
query();
}
}
客服端封装
import java.io.IOException;
import java.util.Collection;
import org.apache.solr.client.solrj.SolrQuery;
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.response.QueryResponse;
import org.apache.solr.common.SolrInputDocument;
public class SolrClient {
HttpSolrServer solrServer = null;
private static SolrClient solrClient = null;
private SolrClient() {
}
public static SolrClient getInstance() {
if (solrClient == null) {
solrClient = new SolrClient();
}
return solrClient;
}
public boolean init(String url) {
solrServer = new HttpSolrServer( url );
solrServer.setMaxRetries(1); // defaults to 0. > 1 not recommended.
solrServer.setConnectionTimeout(5000); // 5 seconds to establish TCP
// Setting the XML response parser is only required for cross
// version compatibility and only when one side is 1.4.1 or
// earlier and the other side is 3.1 or later.
solrServer.setParser(new XMLResponseParser()); // binary parser is used by default
// The following settings are provided here for completeness.
// They will not normally be required, and should only be used
// after consulting javadocs to know whether they are truly required.
solrServer.setSoTimeout(1000); // socket read timeout
solrServer.setDefaultMaxConnectionsPerHost(100);
solrServer.setMaxTotalConnections(100);
solrServer.setFollowRedirects(false); // defaults to false
// allowCompression defaults to false.
// Server side must support gzip or deflate for this to have any effect.
solrServer.setAllowCompression(true);
return true;
}
public void addDoc(SolrInputDocument doc) throws SolrServerException, IOException {
solrServer.add(doc);
}
public void addDocs(Collection docs) throws SolrServerException, IOException {
solrServer.add(docs);
}
public void commit() throws SolrServerException, IOException {
solrServer.commit();
}
public QueryResponse query(SolrQuery query) throws SolrServerException {
return solrServer.query(query);
}
}