solrj的使用

向日葵Solros 2014-09-01

在前面熟悉了solr的配置,在solr配置好了之后,solr就可以增加索引了,这样就必须使用solrJ了,我在附件上传了很多例子。

solrHome是存储索引的地方。

solr是一个java工程,里面是solrj的一些实现代码

solrWeb是一个web工程,主要是配置solr的一些配置项,这个只是一个辅助主项目的一个辅助web工程。

solr的大jar是solrweb工程里面的jar包解压之后直接放到solrwe下的webinfo下的lib下即可。

大家可以通过上一篇博文先进性配置,配置项的一些jar包,这个博文里面全部都有。下面来介绍一下solrj的一些接口的使用。

public static void main(String[] args) throws Exception {

String url="http://localhost:8080/solr/core1";//其实配置好solr之后,浏览器可以直接打开访问,注意要带上你配置访问的实例名字core1

CommonsHttpSolrServer server=new CommonsHttpSolrServer(url);//根据url得到服务器实例

//下面就是一些http的配置项,一般照写就行了

server.setSoTimeout(1000);

server.setConnectionTimeout(1000);

server.setDefaultMaxConnectionsPerHost(1000);

server.setMaxTotalConnections(1000);

server.setFollowRedirects(false);// defaults to false  

// allowCompression defaults to false.  

server.setAllowCompression(true);

server.setMaxRetries(1);// defaults to 0.  > 1 not recommended.

System.out.println(server);

//增加索引

SolrInputDocument doc1=new SolrInputDocument();//得到一个doc实例,这个实际上就是数据库里面的一行记录

//向doc里面增加数据。

第一个参数,id和name之类是在solrHome里面的schema.xml配置好的字段,要保持一致。

第二个参数,是字段的值

第三个参数,是字段的权重,如果权重越大,检索越优先。默认的权重是1.0

doc1.addField("id","1",1.0f);

doc1.addField("type","hehe",1.0f);

doc1.addField("name","黄俊华",1.0f);

//增加到server里面

server.add(doc1);

//如果增加的doc也就是索引的内容完全一样,solr默认增加不进去的。

//增加索引

SolrInputDocument doc2=new SolrInputDocument();

doc2.addField("id","2",1.0f);

doc2.addField("type","hehe",1.0f);

doc2.addField("name","黄俊华",1.0f);

server.add(doc2);

//增加索引

SolrInputDocument doc3=new SolrInputDocument();

doc3.addField("id","3",1.0f);

doc3.addField("type","hehe",1.0f);

doc3.addField("name","黄俊华",1.0f);

server.add(doc3);

//删除全部索引

*:*是全部匹配

// server.deleteByQuery("*:*");

//根据ID删除一个索引

这个ID是在索引里面的主键,在schema文件里面规定的。

// server.deleteById("1");

//提交,只有提交才是被全部写入到索引里面

server.commit();

//查询

SolrQuery query=new SolrQuery();

query.setQuery("*:*");//全查

query.setQuery("id:1");//查询ID为1的数据,里面对应的查询语句

query.addSortField("id",SolrQuery.ORDER.desc);//字段排序

query.addField("id");//要显示的查询字段ID

query.addField("name");

QueryResponse rsp=server.query(query);

SolrDocumentList docs=rsp.getResults();

System.out.println(docs.getNumFound());//输出命中个数

System.out.println(docs);

}

相关推荐