【solr】 使用SolrJ 管理索引库

1、什么是SolrJ

solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:

2、依赖jar包

3、添加文档

3.1实现步骤

第一步:创建一个java工程

第二步:导入jar包。包括solrJ的jar包。还需要

第三步:和Solr服务器建立连接。HttpSolrServer对象建立连接。

第四步:创建一个SolrInputDocument对象,然后添加域。

第五步:将SolrInputDocument添加到索引库。

第六步:提交。

3.2 代码实现

@Test
	public void addDocument() throws Exception {
		//和solr服务器创建连接
		//参数:solr服务器的地址
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		//创建一个文档对象
		SolrInputDocument document = new SolrInputDocument();
		//向文档中添加域
		//第一个参数:域的名称,域的名称必须是在schema.xml中定义的
		//第二个参数:域的值
		document.addField("id", "c0001");
		document.addField("title_ik", "使用solrJ添加的文档");
		document.addField("content_ik", "文档的内容");
		document.addField("product_name", "商品名称");
		//把document对象添加到索引库中
		solrServer.add(document);
		//提交修改
		solrServer.commit();
		
	}

4、删除文档

4.1 根据id或者查询删除

	@Test
	public void testIndexDel() throws Exception{
		//创建和Solr服务端连接
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		
		//根据主键id进行删除
		//solrServer.deleteById("a001");
		
		//根据查询删除,这里是删除所有*:*
		solrServer.deleteByQuery("*:*");
		//提交
		solrServer.commit();
	}

5、查询文档

5.1 简单查询

@Test
	public void testIndexSearch1() throws Exception{
		//连接solr服务端
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		
		//创建solr查询条件对象
		SolrQuery solrQuery = new SolrQuery();
		//查询所有
		solrQuery.setQuery("*:*");
		
		//查询并获取查询响应对象
		QueryResponse queryResponse = solrServer.query(solrQuery);
		//从查询响应中获取查询结果集对象
		SolrDocumentList results = queryResponse.getResults();
		//打印一共查询到多少条记录,也就是记录总数
		System.out.println("=====count====" + results.getNumFound());
		//遍历查询结果集
		for(SolrDocument doc : results){
			System.out.println("============="+doc.get("id"));
			System.out.println("============="+doc.get("product_name"));
			System.out.println("============="+doc.get("product_price"));
			System.out.println("====================================================");
		}
	}

5.2 复杂查询

	@Test
	public void testIndexSearch2() throws Exception{
		//连接solr服务端
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		
		//创建solr查询条件对象
		SolrQuery solrQuery = new SolrQuery();
		//查询关键字输入
		solrQuery.setQuery("台灯");
		//设置默认搜索域
		solrQuery.set("df", "product_keywords");
		//设置过滤查询
		solrQuery.addFilterQuery("product_price:[1 TO 100]");
		//设置排序,这里是降序
		solrQuery.setSort("product_price", ORDER.desc);
		//=======设置分页========
		//设置起始条数
		solrQuery.setStart(0);
		//设置查询多少条
		solrQuery.setRows(50);
		
		//========设置高亮显示=======
		//高亮默认是关闭的,所以要手动开启
		solrQuery.setHighlight(true);
		//设置需要高亮显示的域
		solrQuery.addHighlightField("product_name");
		//设置高亮前缀
		solrQuery.setHighlightSimplePre("<span style=\"color:red\">");
		//设置高亮后缀
		solrQuery.setHighlightSimplePost("</span>");
		
		//===================查询并获取查询响应对象=====================================
		QueryResponse queryResponse = solrServer.query(solrQuery);
		//从查询响应中获取查询结果集对象
		SolrDocumentList results = queryResponse.getResults();
		//打印一共查询到多少条记录,也就是记录总数
		System.out.println("=====count====" + results.getNumFound());
		//遍历查询结果集
		for(SolrDocument doc : results){
			System.out.println("============="+doc.get("id"));
			//获取高亮
			Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
			List<String> list = highlighting.get(doc.get("id")).get("product_name");
			if(list != null && list.size() > 0){
				String hlName = list.get(0);
				System.out.println("=======high lighting=====" + hlName);
			}
			
			System.out.println("============="+doc.get("product_name"));
			System.out.println("============="+doc.get("product_price"));
			System.out.println("====================================================");
		}
	}

猜你喜欢

转载自blog.csdn.net/lxiansheng001/article/details/81165132
今日推荐