使用SolrJ管理索引库

使用solrJ操作索引库,必须先开启服务器。因为操作索引库的是solr项目,我们只是通过solrJ接口向该项目发送请求,告诉solr项目来操作索引库。

1、添加jar包

添加的jar包分为两部分

(1)solrj相关jar

(2)solr运行的jar包

2、添加/更新document

本质没有update方法,update就是删除document后添加一个document。id为索引库中有的就是更新,没有就是添加。

@Test
public void test() throws SolrServerException, IOException {
	//和solr服务器创建连接,默认连接的是collecting1
	//String baseURL = "http://localhost:8080/solr/collection2";
	String baseURL = "http://localhost:8080/solr";
	SolrServer solrServer = new  HttpSolrServer(baseURL);
		
	//创建document对象
	SolrInputDocument document = new SolrInputDocument();
	document.addField("id", "firstSolrJ");
	document.addField("title", "不患无位,患所以立;不患莫己知,求为可知也");
		
	//添加document并提交
	solrServer.add(document);
	solrServer.commit();
}

3、删除document

@Test
public void testDelete() throws SolrServerException, IOException {
	String baseURL = "http://localhost:8080/solr";
	SolrServer solrServer = new  HttpSolrServer(baseURL);
		
	//删除所有
	solrServer.deleteByQuery("*:*", 1000);
		
	//根据id删除
	//solrServer.deleteById("firstSolrJ");
	//solrServer.commit();
}

4、查询文档

@Test
public void testSearch() throws SolrServerException {
	//获得连接
	String baseURL = "http://localhost:8080/solr";
	SolrServer solrServer = new  HttpSolrServer(baseURL);
		
	/*------------------------------添加查询条件------------------------------------*/
	SolrQuery query = new SolrQuery();
	//设置默认域
	//query.set("df", "product_name");
	//query.set("q", "台灯");
	//query.setQuery("product_name:台灯");
	//关键词
	query.set("q", "product_name:台灯");
		
	//设置查询的field
	query.set("fl", "id,product_name,product_catalog_name,product_price");
	//过滤条件
	query.set("fq", "product_catalog_name:幽默杂货");
	//价格区间
	query.set("fq", "product_price:[* TO 10]");
	//设置价格排序
	query.addSort("product_price", ORDER.asc);
	//分页,默认0开始,显示10条
	query.setStart(0);
	query.setRows(5);
	//高亮
	query.setHighlight(true);
	query.addHighlightField("product_name");
	query.setHighlightSimplePre("<span style='color:red'>");
	query.setHighlightSimplePost("</span>");
	/*------------------------------添加查询条件------------------------------------*/
		
	//执行查询
	QueryResponse response = solrServer.query(query);
		
	/*------------------------------显示查询结果------------------------------------*/
	SolrDocumentList results = response.getResults();
	System.out.println("共查到" + results.getNumFound() + "记录");
		
	//获得高亮map——结构可以看solr后台管理
	Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
		
	System.out.println();
	for (SolrDocument doc : results) {
		System.out.println(doc.get("id"));
		System.out.println(doc.get("product_catalog_name"));
		System.out.println(doc.get("product_price"));
		System.out.println(doc.get("product_name"));
		System.out.println(doc.get("product_picture"));
		//显示高亮域
	System.out.println(highlighting.get(doc.get("id")).get("product_name").get(0));
		System.out.println("---------------------我是分割线------------------------------");
			
	}
	/*------------------------------显示查询结果------------------------------------*/
		
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值