(Slor)java对solr的基本操作

package cn.solr;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

/**
 * 操作Solr服务端的索引库
 * <p>Title: SolrDao</p>
 * <p>Description: </p>
 * <p>Company:</p> 
 * @author	夏 杰
 * @date	2016年1月25日下午3:44:43
 * @version 1.0
 */
public class SolrDao {
	/**
	 * 往索引库添加文档
	 * @throws IOException 
	 * @throws SolrServerException 
	 */
	@Test
	public void addDoc() throws SolrServerException, IOException{
		//这里可以从文件里读或数据库里读
		
		//构造一篇文档
		SolrInputDocument document = new SolrInputDocument();
	    //往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
		document.addField("id", "number001");
		document.addField("title_ik", "浙大恒久远");
		document.addField("content_ik", "软院永流传");
		
		//获得一个solr服务端的请求,去提交
		HttpSolrServer solrClient = new HttpSolrServer("http://localhost:8080/solr");
		solrClient.add(document);
		solrClient.commit();
	}
	
	/**
	 * 根据id删除文档
	 * 从索引库删除文档
	 */
		@Test
		public void deleteDocumentById() throws Exception {
			HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr");
			//删除文档
			server.deleteById("num001");
			//提交修改
			server.commit();
		}
		
		//根据查询删除文档
		@Test
		public void deleteDocumentByQuery() throws Exception {
			HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr");
			//根据查询条件删除
			//server.deleteByQuery("*:*");
			//提交修改
			server.commit();
		}
	
	 /**
	   * 对索引库中的文档进行更新
	 * @throws SolrServerException 
	 */
	@Test
	public void query() throws SolrServerException{
		HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr");
		SolrQuery query = new SolrQuery();
		//给query设置一个主查询条件
		//query.set("q", "*:*");//查询所有
		
		query.set("q","台灯");
		
		//给query增加过滤查询条件
		query.addFilterQuery("product_price:[0 TO 200]");
		
		//给query增加布尔过滤条件
		//query.addFilterQuery("-product_name:台灯");
		
		//给query设置默认搜索域
		query.set("df", "product_keywords");
		
		//设置返回结果的排序规则
		query.setSort("product_price",ORDER.desc);
		
		//设置分页参数
		query.setStart(0);
		query.setRows(20);//每一页多少值
		
		//设置高亮
		query.setHighlight(true);
		//设置高亮的字段
		query.addHighlightField("product_name");
		//设置高亮的样式
		query.setHighlightSimplePre("<em>");
		query.setHighlightSimplePost("</em>");
		QueryResponse response = server.query(query);
     	//查询得到文档的集合
		SolrDocumentList solrDocumentList = response.getResults();
		System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
		
		//遍历列表
		for (SolrDocument solrDocument : solrDocumentList) {
			System.out.println(solrDocument.get("id"));
			System.out.println(solrDocument.get("product_name"));
			System.out.println(solrDocument.get("product_price"));
			System.out.println(solrDocument.get("product_catalog_name"));
			System.out.println(solrDocument.get("product_picture"));
		}
	}
	
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值