JAVA工程对Solr进行增删改以及封装一个Query对象

今天写了个JAVA工程来对以及部署在tomcat上的Solr项目进行增删改查操作。

首先先获取到HttpSolrServer。

HttpSolrServer httpSolrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
传进去的参数就是Solr的访问地址。
向solr服务器添加一个文档
public void addSolrIndex() throws Exception, IOException {
		// solr web server
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "0001");
		document.addField("content", "哈哈18岁");
		httpSolrServer.add(document);

		httpSolrServer.commit();
	}
删除solr服务器中的索引
public void deleteSolrIndex() throws Exception {
		// httpSolrServer.deleteByQuery("*:*");
		httpSolrServer.deleteById("test0001");
		httpSolrServer.commit();
	}
更新solr服务器中的索引
public void updateSolrIndex() throws Exception {
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "test0001");
		document.addField("content", "赵老师30岁");
		httpSolrServer.add(document);
		httpSolrServer.commit();
	}
查询操作

public void searchSolrIndex() {
		try {
			// 封装查询条件
			SolrQuery query = new SolrQuery();
			query.set("q", "花儿朵朵");
			// 添加过滤条件
			// query.setFilterQueries("product_name:花儿朵朵",
			// "product_catalog_name:辣条");
			String  s = "10-20";
			String[] split = s.split("-");
			query.setFilterQueries("product_price:["+split[0]+" TO "+split[1]+"]");
			// 排序
			query.addSort("product_price", ORDER.desc);

			query.setStart(0);
			query.setRows(10);

			// 查询返回的域
			// query.setFields("", "");
			// 设置默认查询域
			query.set("df", "product_keywords");

			// 设置高亮
			query.setHighlight(true);
			query.addHighlightField("product_name");
			query.setHighlightSimplePre("<em color=\"red\">");
			query.setHighlightSimplePost("</em>");

			// 执行查询并返回一个QueryResponse对象
			QueryResponse response = httpSolrServer.query(query);
			SolrDocumentList results = response.getResults();
			// 本次查询命中的文档数量
			long numFound = results.getNumFound();
			System.out.println("numFound = " + numFound);
			
			
			// 获取高亮显示的内容
			Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();

			for (SolrDocument solrDocument : results) {
				String id = (String) solrDocument.get("id");
				
				String product_name = "";
				List<String> list = highlighting.get(id).get("product_name");
				if (null != list && list.size() > 0) {
					product_name = list.get(0);
				} else {
					product_name = (String) solrDocument.get("product_name");
				}
				
				String product_catalog_name = (String) solrDocument.get("product_catalog_name");
				float product_price = (float) solrDocument.get("product_price");
				String product_picture = (String) solrDocument.get("product_picture");

				System.out.println("id = " + id + " \t product_name=" + product_name + " \t product_catalog_name="
						+ product_catalog_name + " \t product_price=" + product_price + " \t product_picture="
						+ product_picture);
			}
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值