三、SolrJ的添加 删除 查询

package com.itheima.solrj;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
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.apache.solr.common.params.SolrParams;
import org.junit.Test;

/**
 * SolrJ管理
 * 添加 
 * 删除
 * 修改
 * 查询
 * @author mjl
 *
 */
public class SolrJManager {

	//添加
	@Test
	public void testAdd() throws SolrServerException, IOException{
		String baseURL = "http://localhost:8080/solr/";
		//单机版
		SolrServer solrServer = new HttpSolrServer(baseURL);
		
		SolrInputDocument doc = new SolrInputDocument();
		doc.setField("id", "haha");
		doc.setField("name", "范冰冰");
		//添加
		solrServer.add(doc);
		solrServer.commit();
	}
	
	//删除
	@Test
	public void testDelete() throws SolrServerException, IOException{
		//删除全部
		String baseURL = "http://localhost:8080/solr/";
		//单机版
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//删除全部
		solrServer.deleteByQuery("*:*", 1000);
	}
	
	//更新
	@Test
	public void testUpdate(){
		String baseURL = "http://localhost:8080/solr/";
		//单机版
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//与添加一致,只要ID相同就是更新,不同就是添加
		
	}
	
	//查询
	@Test
	public void testSearch() throws SolrServerException{
		String baseURL = "http://localhost:8080/solr/";
		//单机版
		SolrServer solrServer = new HttpSolrServer(baseURL);
		//查询 
			//关键词:台灯 
			//过滤条件:"product_catagory_name":"幽默杂货" 
			//价格区间:"product_price":18.0
			//价格排序  
			//开始行 每页数
			//高亮 默认域 只查询指定域
		SolrQuery solrQuery = new SolrQuery();
		//设置关键词
	//	solrQuery.set("q", "product_name:台灯");
		solrQuery.setQuery("product_name:台灯");
		//设置过滤条件
		solrQuery.set("fq","product_catalog_name:幽默杂货");
		solrQuery.set("fq","product_price:[* TO 10]");
		//价格排序
		solrQuery.addSort("product_price", ORDER.desc);
		//分页
		solrQuery.setStart(0);
		solrQuery.setRows(5);
		//默认域 指定域 高亮
		solrQuery.set("df", "product_name");
		solrQuery.set("fl", "id,product_name");
		//高亮
		solrQuery.setHighlight(true);
		//指定高亮的字段
		solrQuery.addHighlightField("product_name");
		//前缀
		solrQuery.setHighlightSimplePre("<span style='color:red'>");
		//后缀
		solrQuery.setHighlightSimplePost("</span>");
		
		//执行查询
		QueryResponse response = solrServer.query(solrQuery);
		//文档结果集
		SolrDocumentList docs = response.getResults();
		
		Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
		//Map K id V Map
		//Map K 域名 V List
		//List list.get(0)

		//总条数
		long numFound = docs.getNumFound();
		System.out.println(numFound);
		
		for (SolrDocument doc : docs) {
			System.out.println(doc.get("id"));
			System.out.println(doc.get("product_picture"));
			System.out.println(doc.get("product_name"));
			
			System.out.println("------");
			
			Map<String, List<String>> map = highlighting.get(doc.get("id"));
			List<String> list = map.get("product_name");
			System.out.println(list.get(0));
		}
	}
}

  

转载于:https://www.cnblogs.com/syj1993/p/10044887.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值