淘淘商城33-使用java的solrJ管理solr索引库

版权声明:本文为博主原创文章,如有转载请注明出处,谢谢。 https://blog.csdn.net/pdsu161530247/article/details/81945419

目录

1.添加文档

2.删除文档

2.1根据id删除

2.2根据查询删除

3.查询索引库

3.1简单查询

3.2带高亮显示查询


使用SolrJ可以实现索引库的增删改查操作。

1.添加文档

第一步:把solrJ的jar包添加到工程中。

第二步:创建一个SolrServer,使用HttpSolrServer创建对象。

第三步:创建一个文档对象SolrInputDocument对象。

第四步:向文档中添加域。必须有id域,域的名称必须在schema.xml中定义。

第五步:把文档添加到索引库中。

第六步:提交。

@Test
	public void addDocument() throws Exception {
		// 第一步:把solrJ的jar包添加到工程中。
		// 第二步:创建一个SolrServer,使用HttpSolrServer创建对象。
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");
		// 第三步:创建一个文档对象SolrInputDocument对象。
		SolrInputDocument document = new SolrInputDocument();
		// 第四步:向文档中添加域。必须有id域,域的名称必须在schema.xml中定义。
		document.addField("id", "001");
		document.addField("item_title", "测试商品");
		document.addField("item_price", "199");
		// 第五步:把文档添加到索引库中。
		solrServer.add(document);
		// 第六步:提交。
		solrServer.commit();
	}

成功添加id=001的文档

2.删除文档

2.1根据id删除

第一步:创建一个SolrServer对象。

第二步:调用SolrServer对象的根据id删除的方法。

第三步:提交。

@Test
	public void deleteDocumentById() throws Exception {
		// 第一步:创建一个SolrServer对象。
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");
		// 第二步:调用SolrServer对象的根据id删除的方法。
		solrServer.deleteById("001");
		// 第三步:提交。
		solrServer.commit();
	}

发现刚才添加的id=001的文档没了

2.2根据查询删除

重新将开始删除文档添加回来

根据item_title删除,根据item_price等等类似

@Test
	public void deleteDocumentByQuery() throws Exception {
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");
		solrServer.deleteByQuery("item_title:测试商品");
		solrServer.commit();
	}

成功删除

3.查询索引库

先将数据还原回来。

3.1简单查询

查询步骤:

第一步:创建一个SolrServer对象

第二步:创建一个SolrQuery对象。

第三步:向SolrQuery中添加查询条件、过滤条件。。。

第四步:执行查询。得到一个Response对象。

第五步:取查询结果。

第六步:遍历结果并打印。

@Test
	public void queryDocument() throws Exception {
		// 第一步:创建一个SolrServer对象
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");
		// 第二步:创建一个SolrQuery对象。
		SolrQuery query = new SolrQuery();
		// 第三步:向SolrQuery中添加查询条件、过滤条件。。。
		query.setQuery("*:*");
		// 第四步:执行查询。得到一个Response对象。
		QueryResponse response = solrServer.query(query);
		// 第五步:取查询结果。
		SolrDocumentList solrDocumentList = response.getResults();
		System.out.println("查询结果的总记录数:" + solrDocumentList.getNumFound());
		// 第六步:遍历结果并打印。
		for (SolrDocument solrDocument : solrDocumentList) {
			System.out.println(solrDocument.get("id"));
			System.out.println(solrDocument.get("item_title"));
			System.out.println(solrDocument.get("item_price"));
		}
	}

成功查询索引库

3.2带高亮显示查询

@Test
	public void queryDocumentWithHighLighting() throws Exception {
		// 第一步:创建一个SolrServer对象
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");
		// 第二步:创建一个SolrQuery对象。
		SolrQuery query = new SolrQuery();
		// 第三步:向SolrQuery中添加查询条件、过滤条件。。。
		query.setQuery("测试");
		//指定默认搜索域
		query.set("df", "item_keywords");
		//开启高亮显示
		query.setHighlight(true);
		//高亮显示的域
		query.addHighlightField("item_title");
		query.setHighlightSimplePre("<em>");
		query.setHighlightSimplePost("</em>");
		// 第四步:执行查询。得到一个Response对象。
		QueryResponse response = solrServer.query(query);
		// 第五步:取查询结果。
		SolrDocumentList solrDocumentList = response.getResults();
		System.out.println("查询结果的总记录数:" + solrDocumentList.getNumFound());
		// 第六步:遍历结果并打印。
		for (SolrDocument solrDocument : solrDocumentList) {
			System.out.println(solrDocument.get("id"));
			//取高亮显示
			Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
			List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
			String itemTitle = null;
			if (list != null && list.size() > 0) {
				itemTitle = list.get(0);
			} else {
				itemTitle = (String) solrDocument.get("item_title");
			}
			System.out.println(itemTitle);
			System.out.println(solrDocument.get("item_price"));
		}
	}

在输出时加上了标签,在网页中可以高亮显示

猜你喜欢

转载自blog.csdn.net/pdsu161530247/article/details/81945419
今日推荐