java使用solrJ进行增删查改,排序

1.查询全部,或者按条件查询

/**查询**/
	@Test
	public void query() {
		String URL = "http://localhost:8087/solr/core1"; //启动后Solr的URL
		HttpSolrClient server = new HttpSolrClient(URL); //连接到服务
		SolrQuery query = new SolrQuery("*:*");//定义查询内容, 查询条件可以修改,如 name:张三*
		query.setStart(0);//从0开始
		query.setRows(10);//查出10行
		QueryResponse response;
		SolrDocumentList resultList;
		System.out.println("---------"+query.getQuery());
		try {
			response = server.query(query);
			resultList = response.getResults();
			System.out.println("---------"+resultList.getNumFound());
			//查询出来的结果显示
			for(SolrDocument doc:resultList){
				System.out.println(doc);
			}
			
		} catch (SolrServerException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

2.添加索引里的一条记录

/**添加**/
	@Test
	public void addDoc() {
		String URL="http://localhost:8087/solr/core1";
		HttpSolrClient server = new HttpSolrClient(URL);
		Collection<SolrInputDocument> documents = new ArrayList<SolrInputDocument>();
		SolrInputDocument doc = new SolrInputDocument();
		doc.addField("zzbm", "01010101");
		doc.addField("zzmc", "新增文档的测试");
		documents.add(doc);
		try {
			UpdateResponse response =  server.add(documents);
			System.out.println("添加进去 : "+documents.size()+"结果  : "+response.getStatus());
			UpdateResponse responseCommit = server.commit(); //必须提交
			System.out.println("commit结果:"+responseCommit.getStatus());
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	

3.删除

/**删除:通过Id删除,我的Id是zzbm**/
	//@Test
	public void deleteDocById(){
		String URL="http://localhost:8087/solr/core1";
		HttpSolrClient server = new HttpSolrClient(URL);
		try {
			//这里用的Id是zzbm
			UpdateResponse response = server.deleteById("01010101");
			server.commit();
			System.out.println("删除的结果:"+response.getStatus());
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**删除byquery:除id字段来删除
	 * 根据查询结果来删除**/
	@Test
	public void deleteDocByQuery(){
		String URL="http://localhost:8087/solr/core1";
		HttpSolrClient server = new HttpSolrClient(URL);
		String query = "zzmc:新增文档的测试";
		UpdateRequest request = new UpdateRequest(); 
		//request.deleteByQuery(query); //HttpSolrClient也可以 server.deleteByQuery(query);
		try {
			server.deleteByQuery(query);
			server.commit();	
		} catch (SolrServerException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

4.修改

/**修改:就是添加,如果id已经存在,就是修改**/
	@Test
	public void updateDoc(){
		String URL="http://localhost:8087/solr/core1";
		HttpSolrClient server = new HttpSolrClient(URL);
		
		SolrInputDocument doc = new  SolrInputDocument();
		doc.addField("zzbm", "01010102");
		doc.addField("zzmc", "测试测试");
		try {
			UpdateResponse response = server.add(doc);
			UpdateResponse commitResponse = server.commit();
			System.out.println("修改的结果:"+commitResponse.getStatus());
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

5.排序

/**测试solr的排序功能**/
	@Test
	public void testSolrSort(){
		String URL = "http://localhost:8087/solr/core1";
		HttpSolrClient server = new HttpSolrClient(URL); //连接到服务
		SolrQuery  query = new SolrQuery("*:*");//查询的字段等 
		//排序的字段
		query.setSort("zzbm", ORDER.desc);//降序
	    query.addSort("zzmc", ORDER.desc);
		//这句无效      query.addSort("zzbm", ORDER.asc);//set 再 addSort() --变成了无效
		//设置查询的数量
		query.setStart(0);
		query.setRows(30);
		QueryResponse response ;
		SolrDocumentList documentList ;
		try {
			response = server.query(query); //服务 启动查询功能,得到返回的响应response
			documentList = response.getResults();//从响应结果拿到返回的结果列表
			for(SolrDocument document : documentList){
				System.out.println(document);
			}
		} catch (SolrServerException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


猜你喜欢

转载自blog.csdn.net/wylsde_zjy/article/details/79470392
今日推荐