淘淘商城22_全文检索_通过solrj对solr索引库进行操作

百度网盘:jar包solrj

链接:https://pan.baidu.com/s/1HJ5M4YGyXj4AA3Enf6sDsA 
提取码:rqy9 

步骤:

第一步:创建一个java工程
第二步:导入jar包。包括solrJ的jar包

第三步:和Solr服务器建立连接。HttpSolrServer对象建立连接。

第四步:创建一个SolrInputDocument对象,然后添加域。

第五步:将SolrInputDocument添加到索引库。

第六步:提交。

1. 创建一个java project工程 TestSolrJ

2. 创建一个lib,如上图

3. 在lib中添加jar包

4. 代码编写

在这里添加Junit的jar包

4.1 添加

package com.taotao.solrj;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrJTest {

	@Test
	public void addIndex() throws Exception{
		//1.连接 solr
		SolrServer solr = new HttpSolrServer("http://localhost:8081/solr");
		//2.创建索引库
		SolrInputDocument document = new SolrInputDocument();
		//3.添加信息
		document.addField("id", "11111");
		document.addField("product_name", "郭凯明");
		//把信息添加到索引库中
		solr.add(document);
		//提交事务
		solr.commit();
	}
}

4.2 修改

只需要按照原来的id进行重新赋值,就是修改操作.

4.3 删除

/**
	 * 删除
	 * @throws SolrServerException
	 * @throws IOException
	 */
	@Test
	public void delIndex() throws SolrServerException, IOException{
		SolrServer server = new HttpSolrServer("http://localhost:8081/solr");
		server.deleteById("1");//删除id为1的产品
		//server.deleteByQuery("*:*");//删除所有数据
		server.commit();
	}

id为1的产品已没有 

4.4 查询之简单查询

/**
	 * 简单查询
	 * @throws SolrServerException
	 */
	@Test
	public void queryIndex() throws SolrServerException{
		//1.创建连接
		SolrServer server = new HttpSolrServer("http://localhost:8081/solr");
		//2.创建查询对象
		SolrQuery query = new SolrQuery();
		//3.创建查询条件
		query.setQuery("*:*");
		//4.添加查询条件
		QueryResponse response = server.query(query);
		//5.获取查询返回结果
		SolrDocumentList list = response.getResults();
		//6.遍历
		for (SolrDocument solrDocument : list) {
			String str = solrDocument.get("id")+","+solrDocument.get("product_name")+","+solrDocument.get("product_price");
			System.out.println(str);
		}
		
	}

4.5 查询之复杂查询

/**
	 * 复杂查询
	 * @throws SolrServerException
	 */
	@Test
	public void queryIndexHight() throws SolrServerException{
		//创建连接
		SolrServer  solrServer  = new HttpSolrServer("http://localhost:8081/solr");
		SolrQuery  solrQuery = new SolrQuery();
		//添加查询条件
		solrQuery.setQuery("product_name:台灯");
		//添加 过滤条件
		solrQuery.addFilterQuery("product_price:[20 TO 30]");
		//添加排序
		solrQuery.setSort("product_price",ORDER.desc);
		//默认显示10条记录
		solrQuery.setStart(0);
		solrQuery.setRows(50);//显示条数
		//设置显示的返回字段内容
		solrQuery.setFields("id,product_name,product_price");
		//设置默认搜索域
		solrQuery.set("product_keywords");
		//高亮显示
		solrQuery.setHighlight(true);//打开高亮显示
		//设置高亮显示的域
		solrQuery.addHighlightField("product_name");
		//设置高亮显示的开始标签
		 solrQuery.setHighlightSimplePre("<span style=\"color:red\">");
		 solrQuery.setHighlightSimplePost("</span>");
		
		 QueryResponse response = solrServer.query(solrQuery);
		 //获取查询返回结果
		 SolrDocumentList  documentList = response.getResults();
		 //遍历集合
		 Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();//取高亮显示的信息
		 for (SolrDocument solrDocument : documentList) {
			 List<String> list = highlighting.get(solrDocument.get("id")).get("product_name");
			 if(list.size()>0&& list !=null){
				 System.out.println(list.get(0));
			 }
			System.out.println(solrDocument.get("id")+","+solrDocument.get("product_name")+","+solrDocument.get("product_price"));
		}
	}

猜你喜欢

转载自blog.csdn.net/fjz_lihuapiaoxiang/article/details/85225250