Bootstrap

Solr索引之增删改查

浏览器界面操作:

一、添加:如图添加相应内容后点击Submit Documents,出现图上所示success状态则表示添加成功。 


二、修改:修改界面和添加界面一致,但是修改是通过先删除再添加新索引实现的。


三、删除:使用xml方式输入删除的标签<delete>,再加上提交标签<commit>

也可以使用<query>标签进行批量删除


四、查询:

1.q :query 通过  【域名:关键字】 进行查询 

2.fq :filter query  通过【域名:[min TO max ]】 进行查询

3.sort:排序,通过【域名 asc/desc】进行排序查询

4.start,rows :相对于mysql的limit ,表示从第start条开始,取rows条

5.fl :Field List :表示所需要查询的字段

6.df :default  search field ,

7.wt :返回的数据格式

8.hl :high light ,高亮显示 

hl.fl:需要高亮显示的域名



solrJ相关操作:

1.导入相关jar包:

核心包:solr-solrj-4.10.3.jar

依赖包:



一、添加:

	@Test
	public void testAddIndex() throws Exception{
		//创建和solr服务端连接
		SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
		//创建solr文档对象
		SolrInputDocument document = new SolrInputDocument();
		//定义域的相关内容
		document.addField("id", "22222");
		document.addField("product_name", "ACmilan");
		document.addField("product_price", "700000000");
		//添加
		server.add(document);
		//提交
		server.commit();
	}


二、修改:无相关修改方法,会根据id进行查询,如果找到相关内容会先删除,再添加;如果没有找到,就直接进行添加。


三、删除:

	@Test
	public void testDeleteIndex() throws Exception{
		//创建和solr服务端连接
		SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
		//根据主键id进行删除
		server.deleteById("22222");
		//根据查询条件进行删除
		server.deleteByQuery("*:*");
		//提交
		server.commit();
	}

四、查询:

1.普通查询:

	@Test
	public void textSearchIndex1() throws Exception{
		//创建和solr服务端连接
		SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
		//创建solr的查询条件对象
		SolrQuery query = new SolrQuery();
		//查询所有
		query.setQuery("*:*");
		//查询并获取响应对象
		QueryResponse queryResponse = server.query(query);
		//从查询响应中获取查询结果集对象
		SolrDocumentList results = queryResponse.getResults();
		//获取查询条数
		System.out.println("查询的条数为:"+results.getNumFound());
		//遍历查询结果集
		for (SolrDocument solrDocument : results) {
			System.out.println(solrDocument.get("product_name"));
		}
	}

【查询结果如下】:

查询的条数为:3803
花儿朵朵彩色金属门后挂&nbsp;8钩免钉门背挂钩2066
幸福一家人彩色金属门后挂&nbsp;8钩免钉门背挂钩2088
神偷奶爸电影同款&nbsp;惨叫发泄公仔&nbsp;发声小黄人
神偷奶爸电影同款&nbsp;&nbsp;发泄公仔&nbsp;暴眼小黄人
有趣浪漫魔力无痕挂钩&nbsp;环保厨房卫生间衣钩无痕挂钩
zakka杂货&nbsp;情侣小鹿树脂摆件家居装饰品一对
魔幻星座音乐水晶球内雕音乐盒七彩渐变音乐球
家天下情侣款仿真缝纫机音乐盒八音盒&nbsp;创意礼品
家天下嘻哈动物魔术贴挂钩绕带无痕挂钩2个装RB205
创意卡通动物铁艺门后挂钩挂物ZT3103


2.高级查询:

		@Test
		public void textSearchIndex2() throws Exception{
			//创建和solr服务端连接
			SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
			//创建solr的查询条件对象
			SolrQuery query = new SolrQuery();
			
			//查询关键字
			query.setQuery("手机");
			//设置默认搜索域
			query.set("df", "product_keywords");
			//设置过滤查询
			query.addFilterQuery("product_price:[18 TO 20]");
			//设置排序
			query.setSort("product_price", ORDER.desc);
			//设置分页
			query.setStart(10);//设置起始位置
			query.setRows(20);//设置显示条数
			
			//设置高亮显示
			//开启高亮
			query.setHighlight(true);
			//设置需要高亮显示的域
			query.addHighlightField("product_name");
			//设置高亮前缀
			query.setHighlightSimplePre("<span style=\"color:red\">");
			//设置高亮后缀
			query.setHighlightSimplePost("</span>");
			
			//查询并获取响应对象
			QueryResponse queryResponse = server.query(query);
			//从查询响应中获取查询结果集对象
			SolrDocumentList results = queryResponse.getResults();
			//获取查询条数
			System.out.println("查询的条数为:"+results.getNumFound());
			//遍历查询结果集
			for (SolrDocument solrDocument : results) {
				System.out.println("ID:"+solrDocument.get("id")+",名称:"+solrDocument.get("product_name")+",价格"+solrDocument.get("product_price"));
			
				//获取高亮
				Map<String,Map<String,List<String>>> highLighting = queryResponse.getHighlighting();
				List<String> list = highLighting.get(solrDocument.get("id")).get("product_name");
				if(list!=null && list.size()>0){
					System.out.println(list.get(0));
				}
			}
		}
【查询结果如下:】

查询的条数为:92
ID:5052,名称:家天下韩国新款可爱蝈蝈iphone4/4S苹果手机套硅胶保护壳,价格20.0
家天下韩国新款可爱蝈蝈iphone4/4S苹果<span style="color:red">手机</span>套硅胶保护壳
ID:5108,名称:家天下流氓兔挂耳式/耳挂式耳机&nbsp;个性手机耳机&nbsp;MP3&nbsp;电脑耳机耳麦,价格20.0
家天下流氓兔挂耳式/耳挂式耳机&nbsp;个性<span style="color:red">手机</span>耳机&nbsp;MP3&nbsp;电脑耳机耳麦
ID:5270,名称:家天下洛可无铅健康按压计量玻璃调味瓶调味罐三件套,价格20.0
ID:5272,名称:家天下牡丹圆形五格旋转调味盒RA-023,价格20.0
ID:5273,名称:家天下景泰蓝方形四格旋转调味盒RA-021,价格20.0
ID:5389,名称:家天下塑胶柄超强磁力磨刀器磨刀棒30cm,厨房锋刃要靠它!,价格20.0
ID:5978,名称:韩版糖果色女式手拿包单肩斜跨蝴蝶结小手包-蓝色,价格20.0
韩版糖果色女式<span style="color:red">手</span>拿包单肩斜跨蝴蝶结小<span style="color:red">手</span>包-蓝色
ID:123,名称:家天下热品愤怒的小鸟音乐午睡枕,价格19.0
ID:203,名称:家天下喜洋洋音乐午睡枕,价格19.0
ID:205,名称:家天下面包超人高保真音乐午睡枕,价格19.0

;