一. 什么是solrJ
Solrj is a java client to access solr. It offers a java interface to add, update, and query the solr index;
Solrj是Apache Solr提供的一个基于java端访问solr服务器的相关接口;
提供对solr服务器进行索引增加、修改、查询、删除和索引优化相关接口;
二. 使用Solrj
需要使Solrj必须导入以下Jar包
可以从http://lucene.apache.org/solr/获取相关资源
apache-solr-solrj-3.5.0.jar
apache-solrj-core-3.5.0.jar
commons-httpclient-3.1.jar
slf4j-api-1.6.0.jar
slf4j-jdk14-1.6.1jar
commons-logging-1.1jar
三.增加索引
1) 增加索引
public void addIndex(){
try {
SolrServer server = new CommonsHttpSolrServer("http://192.168.208.119:8389/solr");
SolrInputDocument document = new SolrInputDocument();
document.addField("id",1, new Float(1.0));
document.addField("name", "First");
server.add(document);
server.commit();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
提交到Solr服务器上的数据必须是 SolrInputDocument 类型
2) JavaBean实体转换成SolrInputDocument
public class SolrBean {
@Field
String id;
@Field("path")
String cat;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCat() {
return cat;
}
public void setCat(String cat) {
this.cat = cat;
}
}
@Field无参数时,匹配当前字段,也可以自定义,字段必须在schema.xml 中的Filed中存在
addBeans(Collection beans);
addBean(Object obj);
3) SolrDocument转换成JavaBean , DocumentObjectBinder
SolrDocumentList list = server.query(new SolrQuery("*:*")).getResults();
List solrBeanList = server.getBinder().getBeans(SolrBean.class,list);
4) solr服务器异常情况处理
server.add(docs);
server.commit();
server必须commit();solr服务器才会增加索引;
<1> solr服务器正常关闭(直接将部署Solr的Tomcat执行Stop操作)
当执行在 server.add()时,将Tomcat Stop,
因为server.add()时有个进程将数据提交到Solr服务器;
所有Solr服务器正常关闭时会自动执行server.commit();
<2> solr服务器非正常关闭
当执行在 server.add()时,通过任务管理器将Tomcat结束;
在server.add()时的数据将失效;
5) 将已经存在xml文件提交到solr服务器创建索引
curl http://localhost:8983/solr/mbartists/update -H 'Content-type:text/xml;charset=utf-8' --data-binary @artists.xml
官方文档只提供了基于命令行方式提交文件格式创建索引
四、索引修改:
Solr中修改机制为删除已经存在的索引,在增加新索引;
根据唯一字段来判断索引中是否存在,存在则删除。在添加新索引;
唯一字段参见 schema.xml 中 <uniqueKey>id</uniqueKey>
Solrj is a java client to access solr. It offers a java interface to add, update, and query the solr index;
Solrj是Apache Solr提供的一个基于java端访问solr服务器的相关接口;
提供对solr服务器进行索引增加、修改、查询、删除和索引优化相关接口;
二. 使用Solrj
需要使Solrj必须导入以下Jar包
可以从http://lucene.apache.org/solr/获取相关资源
apache-solr-solrj-3.5.0.jar
apache-solrj-core-3.5.0.jar
commons-httpclient-3.1.jar
slf4j-api-1.6.0.jar
slf4j-jdk14-1.6.1jar
commons-logging-1.1jar
三.增加索引
1) 增加索引
public void addIndex(){
try {
SolrServer server = new CommonsHttpSolrServer("http://192.168.208.119:8389/solr");
SolrInputDocument document = new SolrInputDocument();
document.addField("id",1, new Float(1.0));
document.addField("name", "First");
server.add(document);
server.commit();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
提交到Solr服务器上的数据必须是 SolrInputDocument 类型
2) JavaBean实体转换成SolrInputDocument
public class SolrBean {
@Field
String id;
@Field("path")
String cat;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCat() {
return cat;
}
public void setCat(String cat) {
this.cat = cat;
}
}
@Field无参数时,匹配当前字段,也可以自定义,字段必须在schema.xml 中的Filed中存在
addBeans(Collection beans);
addBean(Object obj);
3) SolrDocument转换成JavaBean , DocumentObjectBinder
SolrDocumentList list = server.query(new SolrQuery("*:*")).getResults();
List solrBeanList = server.getBinder().getBeans(SolrBean.class,list);
4) solr服务器异常情况处理
server.add(docs);
server.commit();
server必须commit();solr服务器才会增加索引;
<1> solr服务器正常关闭(直接将部署Solr的Tomcat执行Stop操作)
当执行在 server.add()时,将Tomcat Stop,
因为server.add()时有个进程将数据提交到Solr服务器;
所有Solr服务器正常关闭时会自动执行server.commit();
<2> solr服务器非正常关闭
当执行在 server.add()时,通过任务管理器将Tomcat结束;
在server.add()时的数据将失效;
5) 将已经存在xml文件提交到solr服务器创建索引
curl http://localhost:8983/solr/mbartists/update -H 'Content-type:text/xml;charset=utf-8' --data-binary @artists.xml
官方文档只提供了基于命令行方式提交文件格式创建索引
四、索引修改:
Solr中修改机制为删除已经存在的索引,在增加新索引;
根据唯一字段来判断索引中是否存在,存在则删除。在添加新索引;
唯一字段参见 schema.xml 中 <uniqueKey>id</uniqueKey>