前言
搭建好了solr服务器,使用solr自带的数据导入是不现实的,我们需要在java代码中实现solr对数据的导入。
导入jar包
引入solr-solrj.jar(solr-4.10.3的dist目录下)
操作数据
1、添加数据
public void addDocument() throws Exception{
//创建一个SolrServer对象,创建一个连接,参数solr服务的url
SolrServer solrServer = new HttpSolrServer("http://solr服务器ip地址:端口号/solr-4.10.3/collection1");
//创建一个文档对象SolrInputDocument
SolrInputDocument document = new SolrInputDocument();
//向文档添加域,文档中必须包含一个id域,所有域的名称必须在schema.xml中定义
document.addField("id", "doc01");
document.addField("item_title", "测试商品01");
document.addField("item_price", 1000);
//把文档写入索引库
solrServer.add(document);
//提交
solrServer.commit();
}
2、删除数据
public void deleteDocument() throws Exception{
SolrServer solrServer = new HttpSolrServer("http://solr服务器ip地址:端口号/solr/collection1");
//删除文档
solrServer.deleteById("doc01");
//或者
//solrServer.deleteByQuery("id:doc01");
//提交
solrServer.commit();
}
3、更新数据
更新即添加,只要添加的数据id域相同,就会更新之前已有的数据。
4、查询数据
public void queryIndex() throws Exception{
//创建一个SolrServer对象
SolrServer solrServer = new HttpSolrServer("http://solr服务器ip地址:端口号/solr/collection1");
//创建一个SolrQuery对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("手机");
//query.set("q", "*:*");//设置组查询条件,*:*代表所有文档
query.setStart(0);//设置分页条件
query.setRows(20);
query.set("df", "item_title");//设置默认搜索域
query.setHighlight(true);//设置高亮显示
query.addHighlightField("item_title");//设置高亮显示域
query.setHighlightSimplePre("");//设置高亮显示前缀
query.setHighlightSimplePost("");//设置高亮显示后缀
//执行查询,得到一个QueryResponse对象
QueryResponse queryResponse = solrServer.query(query);
//取文档列表,取查询结果的总记录数
SolrDocumentList solrDocumentList = queryResponse.getResults();
System.out.println("查询结果总记录数:" + solrDocumentList.getNumFound());
//遍历文档列表,从文档中取域的内容
for(SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
//取高亮显示
Map>> highlighting = queryResponse.getHighlighting();
List list = highlighting.get(solrDocument.get("id")).get("item_title");
String title = "";
if(list != null && list.size() > 0) {
title = list.get(0);
}else {
title = (String) solrDocument.get("item_title");
}
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_sell_point"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
System.out.println(solrDocument.get("item_category_name"));
}
}
总结
至此,单机版的solr服务器以及简单使用完成 。