1,SolrJ之HttpSolrClient
旧版本的连接服务HttpSolrServer在solr5版本后已经停用,被新的HttpSolrClient取代,大家可以从下面的url中查看相关的API,了解更详细的变动。
HttpSolrClient server=new HttpSolrClient(url);
//设置对应请求的目标主机线程数为1000条
server.setDefaultMaxConnectionsPerHost(1000); server.setMaxTotalConnections(10000);
server.setConnectionTimeout(60000);//设置连接超时时间(单位毫秒) 1000
server.setSoTimeout(60000);//// 设置读数据超时时间(单位毫秒) 1000
server.setFollowRedirects(false);//遵循从定向
server.setAllowCompression(true);//允许压缩
API:http://lucene.apache.org/solr/5_3_1/solr-solrj/index.html
2,solr添加索引
HttpSolrClient server = SolrServer.getServer();
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "123456");
doc.addField("title_s", "test");
doc.addField("des_s", "test des");
try {
server.add(doc);
server.commit();
} catch (Exception e) {
e.printStackTrace();
}
Id:索引中的唯一ID,定义见配置。title_s:动态字符串域定义,静态见配置。
3,Solr查询索引
HttpSolrClient server = SolrServer.getServer();
SolrQuery sQuery = new SolrQuery();
sQuery.setQuery(str); // 默认*:* , des_s:xxx , 具体见查询语法
//sQuery.set("q", "des_s:test*");// 查询nickname是已chm开头的数据
sQuery.setStart(0); // 检索偏移量
sQuery.setRows(5); // 返回行数
QueryResponse queryResponse;
try {
queryResponse = server.query(sQuery);
SolrDocumentList list = queryResponse.getResults();
System.out.println("query result nums: " + list.getNumFound());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getFieldValue("des_s"));
}
} catch (Exception e) {
e.printStackTrace();
}
4,solr删除索引
HttpSolrClient server = SolrServer.getServer();
server.deleteById(“123456”); // 单个id
server.commit();
HttpSolrClient server = SolrServer.getServer();
List<String> ids = new ArrayList<String>();
ids.add(“123456”); // id的集合
server.deleteById(ids);
server.commit();
5,SolrBean
@Field注解:指定Bean的一个字段为Field,schema.xml配置必须有这个field,不然会报错
public class TestBO implements Serializable{
private static final long serialVersionUID = 1L;
@Field
public String id;
@Field
public String title_s;
@Field
public String des_s;
}
SolrBean添加索引
HttpSolrClient server = SolrServer.getServer();
List<TestBO> beans = new ArrayList<TestBO>();
TestBO bo = new TestBO();
bo.setId("111111");
bo.setTitle_s("helo world.");
bo.setDes_s("test bean.");
beans.add(bo);
try {
server.addBeans(beans);
server.commit();
System.out.println("----索引创建完毕!!!----");
} catch (Exception e) {
e.printStackTrace();
}
SolrBean查询索引
HttpSolrClient server = SolrServer.getServer();
SolrQuery sQuery = new SolrQuery();
sQuery.setQuery(str);
sQuery.setStart(0);
sQuery.setRows(5);
QueryResponse queryResponse;
try {
queryResponse = server.query(sQuery);
List<TestBO> indexBOLists = queryResponse.getBeans(TestBO.class);
System.out.println("----------------------------" + indexBOLists.size());
for (TestBO bo : indexBOLists) {
System.out.println(bo.getDes_s());
}
} catch (Exception e) {
e.printStackTrace();
}
SolrBean删除索引
try {
HttpSolrClient server = SolrServer.getServer();
server.deleteByQuery(condition);
//server.deleteById(id);
server.commit();
System.out.println("清理完毕!");
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
原文:https://www.cnblogs.com/longlonggao/p/13744455.html