solr-java代码查询

1、solr可以集成到spring中,使用ioc进行控制

	<!-- SolrServer的配置 -->
	<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
		<!-- index=0 代表调用有一个构造参数的solrServer的构造方法 -->
		<constructor-arg index="0" value="http://localhost:8080/solr"/>
	</bean>

2、solr的增改删

     @Test
	public void testIndexCreate() throws Exception{
		//创建和Solr服务端连接
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		
		//创建solr文档对象
		SolrInputDocument doc = new SolrInputDocument();
		//域要先定义后使用,还有注意必须要有id主键域
		//solr中没有专用的修改方法, 会自动根据id进行查找,如果找到了则删除原来的将新的加入就是修改,如果没找到,将新的直接加入则就是新增
		doc.addField("id", "a001");
		doc.addField("product_name", "台灯1`111");
		doc.addField("product_price", "12.5");
		
		//将文档加入solrServer对象中
		solrServer.add(doc);
		
		//提交
		solrServer.commit();
	}
	
	@Test
	public void testIndexDel() throws Exception{
		//创建和Solr服务端连接
		SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
		
		//根据主键id进行删除
		//solrServer.deleteById("a001");
		
		//根据查询删除,这里是删除所有*:*
		solrServer.deleteByQuery("*:*");
		//提交
		solrServer.commit();
	}

3、solor的查询

   @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("====================================================");
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值