Solr入门(一)

一.solo是什么

    企业级应用搜索服务器.

二.solo的使用

    1.导包    

<dependencies>
		<!-- Junit单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
		</dependency>
		<dependency>
			<groupId>org.apache.solr</groupId>
			<artifactId>solr-solrj</artifactId>
			<version>4.10.2</version>
		</dependency>
		<!-- Solr底层会使用到slf4j日志系统 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.22</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<!-- java编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

    2.添加索引库数据

/**
	 * 添加索引库数据
	 */
	@Test
	public void testName() throws Exception {
		//第一步 连接solr服务器
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		
		//第二步 创建文档对象
		SolrInputDocument solrInputDocument = new SolrInputDocument();
		solrInputDocument.addField("id", "6");
		solrInputDocument.addField("title", "oppo手机,充电两分钟,通话两小时,居家旅行必备之选");
		//第三步 写数据
		solrServer.add(solrInputDocument);
		solrServer.commit();
	}

    3.添加多个索引库数据

/**
	 * 添加多个索引库数据
	 */
	@Test
	public void testName001() throws Exception {
		//第一步 连接solr服务器
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		
		//第二步 创建文档对象
		List<SolrInputDocument> list =new ArrayList<SolrInputDocument>();
		
		SolrInputDocument solrInputDocument = new SolrInputDocument();
		solrInputDocument.addField("id", "1");
		solrInputDocument.addField("title", "小米手机,发烧友");
		
		SolrInputDocument solrInputDocument2 = new SolrInputDocument();
		solrInputDocument2.addField("id", "2");
		solrInputDocument2.addField("title", "锤子手机,老罗");
		
		SolrInputDocument solrInputDocument3 = new SolrInputDocument();
		solrInputDocument3.addField("id", "3");
		solrInputDocument3.addField("title", "苹果手机,装逼圣器");
		
		SolrInputDocument solrInputDocument4 = new SolrInputDocument();
		solrInputDocument4.addField("id", "4");
		solrInputDocument4.addField("title", "三星手机,小心爆炸");
		list.add(solrInputDocument4);
		list.add(solrInputDocument2);
		list.add(solrInputDocument3);
		list.add(solrInputDocument);
	
		//第三步 写数据
		solrServer.add(list);

	
	
		solrServer.commit();
		
	}

    4.添加javabean对象到索引库数据中

    4.1设置Javabean对象:注意要添加注解@Field 不然会报错

       不添加注解报错的信息 org.apache.solr.client.solrj.beans.BindingException: class: class

public class Item {
	@Field
	private String id;
	@Field
	private String title;
	@Field
	private String text;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	@Override
	public String toString() {
		return "Item [id=" + id + ", title=" + title + ", text=" + text + "]";
	}
	
	

}

    4.2测试案例

    

	/**
	 * 使用javabean导入
	 * 
	 */
	@Test
	public void testName2() throws Exception {
		//第一步 获取连接器
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//第二步 创建需要导入的对象
		Item item = new Item();
		item.setId("7");
		item.setTitle("金立手机,成功人士的标配");
		//第三步 导入
		solrServer.addBean(item);
		solrServer.commit();
		
	}

    5.按照id删除索引数据库

/**
	 * 按照id删除索引数据库
	 */
	@Test
	public void testName3() throws Exception {
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		solrServer.deleteById("6");
		solrServer.commit();
	}

    6.按照索引库标签删除

	/**
	 * 按照索引库删除
	 */
	@Test
	public void testName4() throws Exception {
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		String query="title:旅行";
		solrServer.deleteByQuery(query);
		solrServer.commit();
	}

    7.查询所有数据

/**
	 * 查询所有数据
	 */
	@Test
	public void testName5() throws Exception {
		//第一步  获取连接
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//第二步 创建查询条件对象
		SolrQuery solrQuery = new SolrQuery("*:*");
		//第三步,执行查询,获得查询结果
		QueryResponse response = solrServer.query(solrQuery);
		SolrDocumentList documentList = response.getResults();
		System.out.println("一共获得的"+documentList.size()+"条数据");
		for (SolrDocument solrDocument : documentList) {
			Object fieldValue = solrDocument.getFieldValue("id");
			System.out.println("id============>"+fieldValue);
			Object fieldValue2 = solrDocument.getFieldValue("title");
			System.out.println("title==============>"+fieldValue2);
		}
	}

    8.带条件查询所有数据

/**
	 * 带条件进行查询
	 */
	@Test
	public void testName6() throws Exception {
		//第一步 获取连接器
		HttpSolrServer solrServer = new  HttpSolrServer("http://localhost:8080/solr/core2");
		//第二步 设置查询条件
		SolrQuery solrQuery = new SolrQuery("title:成功");
		//第三步 查询 得到相应数据
		QueryResponse response = solrServer.query(solrQuery);
		//第四步 转换成结果集
		SolrDocumentList documentList = response.getResults();
		System.out.println("设置查询条件后一共有"+documentList.size()+"条数据");
		for (SolrDocument solrDocument : documentList) {
			System.out.println("id==========>"+solrDocument.getFieldValue("id"));
			System.out.println("title=======>"+solrDocument.getFieldValue("title"));
			System.out.println("title=======>"+solrDocument.getFieldValue("name"));
			System.out.println("title=======>"+solrDocument.getFieldValue("text"));
			
			
		}
		
	}

    9.查询的数据以javabean的方式返回

/**
	 * 查询的数据以javabean的方式返回
	 */
	@Test
	public void testName7() throws Exception {
		//第一步.连接器
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//第二步,查询条件
		SolrQuery solrQuery = new SolrQuery("*:*");
		
		//第三的.得到响应数据
		QueryResponse response = solrServer.query(solrQuery);
		//第四步,解析为结果集
		List<Item> list = response.getBeans(Item.class);
		System.out.println("返回的数据个数:"+list.size());
		for (Item item : list) {
			System.out.println("Id:"+item.getId());
			System.out.println("Title:"+item.getTitle());
			
			
		}
		
	}

10.查询的结果、SolrQuery实现排序

	/**
	 * 查询的结果、SolrQuery实现排序
	 */
	@Test
	public void testName8() throws Exception {
		//1 连接器
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//2 查询条件
		SolrQuery solrQuery = new SolrQuery("*:*");
		solrQuery.setSort("id", ORDER.asc);
		//3 查询得到响应数据
		QueryResponse response = solrServer.query(solrQuery);
		//4 解析得到结果集
		List<Item> beans = response.getBeans(Item.class);
		System.out.println("返回的数据个数:"+beans.size());
		for (Item item : beans) {
			System.out.println("Id:"+item.getId());
			System.out.println("Title:"+item.getTitle());
		}
	}

    11.查询结果分页

	/**
	 * 查询结果分页
	 */
	@Test
	public void testName9() throws Exception {
		// 准备分页参数
		int pageNum = 2; //页码
		int pageSize = 3; //每页条数
		
		//1 连接
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//2 查询条件
		SolrQuery query = new SolrQuery("title:*");
		query.setSort("id", ORDER.asc);
		query.setStart((pageNum-1)*pageSize);
		query.setRows(pageSize);
		//3 响应数据
		QueryResponse response = solrServer.query(query);
		
		//4 解析成为结果集
		List<Item> beans = response.getBeans(Item.class);
		
		System.out.println("返回的数据个数:"+beans.size());
		for (Item item : beans) {
			System.out.println("Id:"+item.getId());
			System.out.println("Title:"+item.getTitle());
		}
	}

    12.查询结果高亮显示

/**
	 * 查询到的结果 SolrQuery实现高亮显示
	 */
	@Test
	public void testName10() throws Exception {
		//1 连接
		HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/core2");
		//2 查询条件
		SolrQuery query = new SolrQuery("title:oppo");
		query.setHighlightSimplePre("<em>");
		query.setHighlightSimplePost("</em>");
		query.addHighlightField("title");
		//3 查询得到响应数据
		QueryResponse response = solrServer.query(query);
		//4 解析为结果集
		List<Item> items  = response.getBeans(Item.class);
		
		
		//5 解析高亮字段
		Map<String, Map<String, List<String>>> highlighting  = response.getHighlighting();
		
		
		System.out.println("返回的数据个数:"+items.size());
		for (Item item : items) {
			System.out.println("Id:"+item.getId());
			System.out.println("Title:"+highlighting.get(item.getId()).get("title").get(0) );
			
		}
		
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值