SolrServer
SolrServer是一个抽象类,主要要的实现类有CommonsHttpSolrServer、HttpSolrServer、ConcurrentUpdateSolrServer等,SolrServer类主要用于对索引的创建、添加、删除、修改、查询,因此对于索引的所有操作都是交给SolrServer来完成。CommonsHttpSolrServer类是在Solrj3.5版本之前的(包括3.5版本),而HttpSolrServer是在3.5版本之后的,我们主要以HttpSolrServer为主。其基本用法如下:
1. 构造方法
public HttpSolrServer(String URL)
public HttpSolrServer(String URL,HttpClient client)
这里的URL代表我们的地址、client代表客户端,我们通常使用的是第一种构造方法。
2. 添加索引操作
public UpdateResponse add(SolrInputDocument doc)
public UpdateResponse add(Collection<SolrInputDocument> collection>
public UpdateResponse add(Iterator<SolrInputDocument> iterator>
public UpdateResponse addBean(Object object)
public UpdateResponse addBeans(Collection<?> collection)
以上就是我们添加索引的方法,在add中可以传一个SolrInputDocument的对象,就像我们Lucene中的Document意义,还可以传一个Collection即集合,集合里面就是我们一个一个的SolrInputDocument对象;我们还可以有另外一种添加索引的方法,那就是addBean,即添加一个一个的JavaBean对象,同样我们可以讲一个一个的JavaBean放入到集合中一起添加到索引中去。 这些方法还可以接受一个int型的参数,指定(最大)多长时间后提交索引。
3. 删除索引
public UpdateResponse deleteById(String id)
public UpdateResponse deleteById(List<String> ids)
public UpdateResponse deleteByQuery(String query)
删除索引可以直接传入一个ID或者装有ID的List,同样可以传入一个query,此时根据query的值匹配索引然后删除。这些方法也可以同添加索引一样接受第二个int 参数。
4. public QueryResponse query(SolrParams pararms)
该方法接受一个SolrParams查询参数,得到一个QueryResponse查询响应,使用QueryResponse可以得到我们的结果。
5. 优化索引
public UpdateResponse optimize()
6. 提交索引
public UpdateResponse commit()
当我们对索引进行了添加、更新、删除操作时,必须使用该方法进行提交。
示例:
HttpSolrServer hss=new HttpSolrServer("http://localhost:8080/solr");
List<SolrInputDocument> list=new ArrayList<SolrInputDocument>();
SolrInputDocument sid=null;
for(int i=0;i<10;i++)
{
sid=new SolrInputDocument();
sid.addField("id", "id_"+i);
sid.addField("uname", "uname_"+i);
if(i%2==0)
sid.addField("sex", sex.male);
else
sid.addField("sex", sex.female);
sid.addField("age", i);
sid.addField("hobby", "hobby_"+i);
sid.addField("hobby", "hobby_"+i+1);
list.add(sid);
}
hss.add(list);
hss.commit();
}
}
enum sex{
male,female,
}